Break out of an infinite loop if we're not making progress.

This commit is contained in:
Paul Smith 2012-09-09 20:06:03 +00:00
parent 30b2e4207d
commit a95dc485fa
2 changed files with 6 additions and 0 deletions

View file

@ -2,6 +2,8 @@
* read.c (record_files): Reset the default macro values if .POSIX
is set. Fixes Savannah bug #37069.
(parse_file_seq): Break out of an infinite loop if we're not
making progress when parsing archive references.
2012-09-01 Eli Zaretskii <eliz@gnu.org>

4
read.c
View file

@ -3087,6 +3087,7 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
const char *e = p;
do
{
const char *o = e;
e = next_token (e);
/* Find the end of this word. We don't want to unquote and
we don't care about quoting since we're looking for the
@ -3094,6 +3095,9 @@ parse_file_seq (char **stringp, unsigned int size, int stopchar,
while (*e != '\0' && *e != stopchar && *e != VMS_COMMA
&& ! isblank ((unsigned char) *e))
++e;
/* If we didn't move, we're done now. */
if (e == o)
break;
if (e[-1] == ')')
{
/* Found the end, so this is the first element in an