X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;ds=sidebyside;f=src%2Fdata%2Fpor-file-reader.c;h=7e65c28bdf51c11b54f1f6ddd9eced26670b6197;hb=3bfe739c926ff5729b0f7849d49b79d65a9d0c91;hp=52c0cc8edab5dca9a59b142d83cf9c3466489a3e;hpb=6e22b03f96f0edbace5bce45abdc57e94cf6957c;p=pspp-builds.git diff --git a/src/data/por-file-reader.c b/src/data/por-file-reader.c index 52c0cc8e..7e65c28b 100644 --- a/src/data/por-file-reader.c +++ b/src/data/por-file-reader.c @@ -1,5 +1,5 @@ /* PSPP - a program for statistical analysis. - Copyright (C) 1997-9, 2000, 2006 Free Software Foundation, Inc. + Copyright (C) 1997-9, 2000, 2006, 2009 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 @@ -814,28 +814,30 @@ read_documents (struct pfm_reader *r, struct dictionary *dict) } } -/* Reads one case from portable file R into C. */ -static bool -por_file_casereader_read (struct casereader *reader, void *r_, struct ccase *c) +/* Reads and returns one case from portable file R. Returns a + null pointer on failure. */ +static struct ccase * +por_file_casereader_read (struct casereader *reader, void *r_) { struct pfm_reader *r = r_; + struct ccase *volatile c; size_t i; size_t idx; - case_create (c, casereader_get_value_cnt (reader)); + c = case_create (casereader_get_value_cnt (reader)); setjmp (r->bail_out); if (!r->ok) { casereader_force_error (reader); - case_destroy (c); - return false; + case_unref (c); + return NULL; } /* Check for end of file. */ if (r->cc == 'Z') { - case_destroy (c); - return false; + case_unref (c); + return NULL; } idx = 0; @@ -857,7 +859,7 @@ por_file_casereader_read (struct casereader *reader, void *r_, struct ccase *c) } } - return true; + return c; } /* Returns true if FILE is an SPSS portable file,