Made _xml_char_to_int less prone to crashing
[pspp] / src / data / datasheet.c
index bee55f0f77ff5ae1d8ddd2cc5908be0cea217435..1175e20403eeb0fed73cf95a972beddb860766f8 100644 (file)
@@ -1,5 +1,5 @@
 /* PSPP - a program for statistical analysis.
-   Copyright (C) 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009, 2010, 2011, 2012 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
@@ -509,15 +509,19 @@ datasheet_resize_column (struct datasheet *ds, size_t column, int new_width,
           if (!source_read (&old_col, prow, &src))
             {
               /* FIXME: back out col changes. */
-              return false;
+              break;
             }
           resize_cb (&src, &dst, resize_cb_aux);
           if (!source_write (col, prow, &dst))
             {
               /* FIXME: back out col changes. */
-              return false;
+              break;
             }
         }
+      value_destroy (&src, old_width);
+      value_destroy (&dst, new_width);
+      if (lrow < n_rows)
+       return false;
 
       release_source (ds, old_col.source);
     }
@@ -926,8 +930,7 @@ axis_hash (const struct axis *axis, struct md4_ctx *ctx)
       md4_process_bytes (&size, sizeof size, ctx);
     }
 
-  for (rsn = range_set_first (axis->available); rsn != NULL;
-       rsn = range_set_next (axis->available, rsn))
+  RANGE_SET_FOR_EACH (rsn, axis->available)
     {
       unsigned long int start = range_set_node_get_start (rsn);
       unsigned long int end = range_set_node_get_end (rsn);