http://gcc.gnu.org/bugzilla/show_bug.cgi?id=56180
Jakub Jelinek <jakub at gcc dot gnu.org> changed:
What |Removed |Added
----------------------------------------------------------------------------
Status|UNCONFIRMED |RESOLVED
Resolution| |INVALID
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> 2013-02-02
11:15:22 UTC ---
And, even if ungetc works for more than one character (e.g. in glibc it will
often work if you are calling ungetc with the characters that fgetc etc.
returned from the stream, in reverse order, plus the one guaranteed unrelated
ungetc),
the
/* If we were just checking ahead, unget everything */
while(j) {
ungetc(buf[j], parser->file);
j--;
}
loop is calling ungetc first with an uninitialized byte (j is one above the
last index stored). There are various other issues in the program.