X-Git-Url: https://pintos-os.org/cgi-bin/gitweb.cgi?a=blobdiff_plain;f=src%2Fdata%2Fcasereader.c;h=423a4dada271b432bef5ce8397f4f771b09e909a;hb=cb0c5ca97866cea44dd5467bd630577e19f27707;hp=c8050c6cde4c7b2a35d6d2b45aa752c3ecbee1e8;hpb=c91c295226212bdaf77b4d44e582f8c58558b49b;p=pspp diff --git a/src/data/casereader.c b/src/data/casereader.c index c8050c6cde..423a4dada2 100644 --- a/src/data/casereader.c +++ b/src/data/casereader.c @@ -1,4 +1,4 @@ -/* PSPP - a program for statistical analysis. +/* pspp - a program for statistical analysis. Copyright (C) 2007, 2009, 2010, 2013 Free Software Foundation, Inc. This program is free software: you can redistribute it and/or modify @@ -242,10 +242,22 @@ casereader_count_cases__ (const struct casereader *reader, struct casereader *clone; casenumber n_cases; + /* This seems to avoid a bug in Gcc 4.4.5 where, upon + return from this function, the stack appeared corrupt, + and the program returned to the wrong address. Oddly + the problem only manifested itself when used in conjunction + with the ODS reader, in code such as: + + GET DATA /TYPE=ODS .... + LIST. + */ +#if (__GNUC__ == 4 ) && (__GNUC_MINOR__ == 4) + volatile int x = 1; x++; +#endif + clone = casereader_clone (reader); n_cases = casereader_advance (clone, max_cases); casereader_destroy (clone); - return n_cases; }