X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fdatasheet.c;h=1175e20403eeb0fed73cf95a972beddb860766f8;hb=d33c44dbdaa272f29bb849ad0b0be80356b9485a;hp=ad8333256c0bd2732692d107910c85ae2ef8fb6d;hpb=fe8dc2171009e90d2335f159d05f7e6660e24780;p=pspp diff --git a/src/data/datasheet.c b/src/data/datasheet.c index ad8333256c..1175e20403 100644 --- a/src/data/datasheet.c +++ b/src/data/datasheet.c @@ -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); @@ -978,7 +981,7 @@ static void axis_make_available (struct axis *axis, unsigned long int start, unsigned long int width) { - range_set_insert (axis->available, start, width); + range_set_set1 (axis->available, start, width); } /* Extends the total physical length of AXIS by WIDTH and returns @@ -1228,7 +1231,7 @@ source_create_empty (size_t n_bytes) size_t row_size = n_bytes + 4 * sizeof (void *); size_t max_memory_rows = settings_get_workspace () / row_size; source->avail = range_set_create (); - range_set_insert (source->avail, 0, n_bytes); + range_set_set1 (source->avail, 0, n_bytes); source->data = sparse_xarray_create (n_bytes, MAX (max_memory_rows, 4)); source->backing = NULL; source->backing_rows = 0; @@ -1247,7 +1250,7 @@ source_create_casereader (struct casereader *reader) size_t n_columns; size_t i; - range_set_delete (source->avail, 0, n_bytes); + range_set_set0 (source->avail, 0, n_bytes); source->backing = reader; source->backing_rows = casereader_count_cases (reader); @@ -1301,7 +1304,7 @@ static void source_release_column (struct source *source, int ofs, int width) { assert (width >= 0); - range_set_insert (source->avail, ofs, width_to_n_bytes (width)); + range_set_set1 (source->avail, ofs, width_to_n_bytes (width)); if (source->backing != NULL) source->n_used--; }