i18n: Introduce C_ENCODING as replacement for LEGACY_NATIVE.
[pspp-builds.git] / src / output / tab.c
index 058cb974c6557a6870c445a697991e51aed090cc..fd4685579756dfefda936f95b36597c777262ab4 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 1997-9, 2000, 2006, 2009 Free Software Foundation, Inc.
+   Copyright (C) 1997-9, 2000, 2006, 2009, 2010, 2011 Free Software Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
@@ -30,6 +30,7 @@
 #include <data/dictionary.h>
 #include <libpspp/assertion.h>
 #include <libpspp/compiler.h>
+#include <libpspp/i18n.h>
 #include <libpspp/misc.h>
 #include <libpspp/pool.h>
 #include <output/driver.h>
@@ -94,7 +95,6 @@ tab_create (int nc, int nr)
 void
 tab_resize (struct tab_table *t, int nc, int nr)
 {
-  assert (t != NULL);
   if (nc != -1)
     {
       assert (nc + t->col_ofs <= t->cf);
@@ -118,7 +118,6 @@ tab_realloc (struct tab_table *t, int nc, int nr)
 {
   int ro, co;
 
-  assert (t != NULL);
   ro = t->row_ofs;
   co = t->col_ofs;
   if (ro || co)
@@ -200,8 +199,6 @@ tab_headers (struct tab_table *table, int l, int r, int t, int b)
 void
 tab_vline (struct tab_table *t, int style, int x, int y1, int y2)
 {
-  assert (t != NULL);
-
 #if DEBUGGING
   if (x + t->col_ofs < 0 || x + t->col_ofs > tab_nc (t)
       || y1 + t->row_ofs < 0 || y1 + t->row_ofs >= tab_nr (t)
@@ -240,7 +237,20 @@ tab_vline (struct tab_table *t, int style, int x, int y1, int y2)
 void
 tab_hline (struct tab_table * t, int style, int x1, int x2, int y)
 {
-  assert (t != NULL);
+#if DEBUGGING
+  if (y + t->row_ofs < 0 || y + t->row_ofs > tab_nr (t)
+      || x1 + t->col_ofs < 0 || x1 + t->col_ofs >= tab_nc (t)
+      || x2 + t->col_ofs < 0 || x2 + t->col_ofs >= tab_nc (t))
+    {
+      printf (_("bad hline: x=(%d+%d=%d,%d+%d=%d) y=%d+%d=%d in "
+               "table size (%d,%d)\n"),
+              x1, t->col_ofs, x1 + t->col_ofs,
+              x2, t->col_ofs, x2 + t->col_ofs,
+              y, t->row_ofs, y + t->row_ofs,
+             tab_nc (t), tab_nr (t));
+      return;
+    }
+#endif
 
   x1 += t->col_ofs;
   x2 += t->col_ofs;
@@ -270,8 +280,6 @@ void
 tab_box (struct tab_table *t, int f_h, int f_v, int i_h, int i_v,
         int x1, int y1, int x2, int y2)
 {
-  assert (t != NULL);
-
 #if DEBUGGING
   if (x1 + t->col_ofs < 0 || x1 + t->col_ofs >= tab_nc (t)
       || x2 + t->col_ofs < 0 || x2 + t->col_ofs >= tab_nc (t)
@@ -357,7 +365,6 @@ tab_value (struct tab_table *table, int c, int r, unsigned char opt,
 {
   char *contents;
 
-  assert (table != NULL && v != NULL && f != NULL);
 #if DEBUGGING
   if (c + table->col_ofs < 0 || r + table->row_ofs < 0
       || c + table->col_ofs >= tab_nc (table)
@@ -410,7 +417,7 @@ tab_fixed (struct tab_table *table, int c, int r, unsigned char opt,
 #endif
 
   double_value.f = val;
-  s = data_out_pool (&double_value, LEGACY_NATIVE, &f, table->container);
+  s = data_out_pool (&double_value, C_ENCODING, &f, table->container);
 
   table->cc[c + r * table->cf] = s + strspn (s, " ");
   table->ct[c + r * table->cf] = opt;
@@ -427,8 +434,6 @@ tab_double (struct tab_table *table, int c, int r, unsigned char opt,
   union value double_value ;
   char *s;
 
-  assert (table != NULL);
-
   assert (c >= 0);
   assert (c < tab_nc (table));
   assert (r >= 0);
@@ -454,7 +459,7 @@ tab_double (struct tab_table *table, int c, int r, unsigned char opt,
 #endif
 
   double_value.f = val;
-  s = data_out_pool (&double_value, LEGACY_NATIVE, fmt, table->container);
+  s = data_out_pool (&double_value, C_ENCODING, fmt, table->container);
   table->cc[c + r * table->cf] = s + strspn (s, " ");
   table->ct[c + r * table->cf] = opt;
 }
@@ -635,7 +640,6 @@ tab_offset (struct tab_table *t, int col, int row)
 {
   int diff = 0;
 
-  assert (t != NULL);
 #if DEBUGGING
   if (row < -1 || row > tab_nr (t))
     {
@@ -663,7 +667,6 @@ tab_offset (struct tab_table *t, int col, int row)
 void
 tab_next_row (struct tab_table *t)
 {
-  assert (t != NULL);
   t->cc += t->cf;
   t->ct += t->cf;
   if (++t->row_ofs >= tab_nr (t))
@@ -707,6 +710,8 @@ static void
 tab_destroy (struct table *table)
 {
   struct tab_table *t = tab_cast (table);
+  free (t->title);
+  t->title = NULL;
   pool_destroy (t->container);
 }