X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fpor-file-reader.c;h=7e65c28bdf51c11b54f1f6ddd9eced26670b6197;hb=ef35211c05259417e4f3dd4a7de44e92e4bc54a3;hp=3f2cdd46ec20b914b0a1c9268761e5a962985dc9;hpb=cc6a060446e71cace2d828a864c85702e04aba7c;p=pspp-builds.git diff --git a/src/data/por-file-reader.c b/src/data/por-file-reader.c index 3f2cdd46..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 @@ -509,8 +509,9 @@ read_header (struct pfm_reader *r) static void read_version_data (struct pfm_reader *r, struct pfm_read_info *info) { - static char empty_string[] = ""; - char *date, *time, *product, *author, *subproduct; + static const char empty_string[] = ""; + char *date, *time; + const char *product, *author, *subproduct; int i; /* Read file. */ @@ -813,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; @@ -856,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,