* src/conflicts.c (conflict_report): Be sure not to append to res

between two calls, which could happen if both first sprintf were
skipped, but not the first cp += strlen.
This commit is contained in:
Akim Demaille
2001-02-08 14:51:33 +00:00
parent 66075dcfc8
commit 22c821f312
2 changed files with 27 additions and 9 deletions

View File

@@ -1,3 +1,9 @@
2001-02-08 Akim Demaille <akim@epita.fr>
* src/conflicts.c (conflict_report): Be sure not to append to res
between two calls, which could happen if both first sprintf were
skipped, but not the first cp += strlen.
2001-02-08 Akim Demaille <akim@epita.fr> 2001-02-08 Akim Demaille <akim@epita.fr>
* lib/memchr.c, lib/stpcpy.c, lib/strndup.c, lib/strnlen.c: * lib/memchr.c, lib/stpcpy.c, lib/strndup.c, lib/strnlen.c:

View File

@@ -1,5 +1,5 @@
/* Find and resolve or report look-ahead conflicts for bison, /* Find and resolve or report look-ahead conflicts for bison,
Copyright 1984, 1989, 1992, 2000 Free Software Foundation, Inc. Copyright 1984, 1989, 1992, 2000, 2001 Free Software Foundation, Inc.
This file is part of Bison, the GNU Compiler Compiler. This file is part of Bison, the GNU Compiler Compiler.
@@ -418,20 +418,32 @@ conflict_report (int src_num, int rrc_num)
char *cp = res; char *cp = res;
if (src_num == 1) if (src_num == 1)
sprintf (cp, _(" 1 shift/reduce conflict")); {
sprintf (cp, _(" 1 shift/reduce conflict"));
cp += strlen (cp);
}
else if (src_num > 1) else if (src_num > 1)
sprintf (cp, _(" %d shift/reduce conflicts"), src_num); {
cp += strlen (cp); sprintf (cp, _(" %d shift/reduce conflicts"), src_num);
cp += strlen (cp);
}
if (src_num > 0 && rrc_num > 0) if (src_num > 0 && rrc_num > 0)
sprintf (cp, _(" and")); {
cp += strlen (cp); sprintf (cp, _(" and"));
cp += strlen (cp);
}
if (rrc_num == 1) if (rrc_num == 1)
sprintf (cp, _(" 1 reduce/reduce conflict")); {
sprintf (cp, _(" 1 reduce/reduce conflict"));
cp += strlen (cp);
}
else if (rrc_num > 1) else if (rrc_num > 1)
sprintf (cp, _(" %d reduce/reduce conflicts"), rrc_num); {
cp += strlen (cp); sprintf (cp, _(" %d reduce/reduce conflicts"), rrc_num);
cp += strlen (cp);
}
*cp++ = '.'; *cp++ = '.';
*cp++ = '\n'; *cp++ = '\n';