Bruno Haible <br...@clisp.org> writes:

>> The culprit is pretty clearly this code in lib/vasnprintf.c:
>> 
>>                  case 's':
>> [...]
>>                      tmp_length = strlen (a.arg[dp->arg_index].a.a_string);
>>                    break;
>
> How did you find this? I thought that valgrind only runs on modern
> platforms, which all have snprintf.

I don't know.  Somehow the GNU PSPP current Git tree selected
this case when I configured it on a modern GNU/Linux system, and
so it came up when I was running a test under valgrind.  But it
only did it after I had done some manual editing of Makefiles,
etc. produced by configure, and much source hacking.  And then I
was unable to reproduce it with "gnulib-tool --create-testdir".
So to make sure that it could really happen in a simple test
case, I forced !USE_SNPRINTF by editing vasnprintf.c manually.

The one interesting thing I did to the Makefiles was to set
CFLAGS (not AM_CFLAGS) manually, to a value that used -O0 instead
of -O2 (so that debugging with GDB would be easier).  I don't
know how this could cause such a problem, though.

Thank you for the fix!

One oddity of the fixed version (at least as it appeared in my
email client) is that the comments include a number of usages of
the ligature for "fi", in the word "specified", instead of
separate letters "f" and "i".  I guess that you must have cut and
pasted from an ISO document that included those ligatures.
-- 
"Because computer source code is an expressive means for the exchange
 of information and ideas about computer programming, we hold that it
 is protected by the First Amendment."
--Hon. Boyce F. Martin, Jr., for the 6th Circuit Court, Junger vs. Daley


Reply via email to