summaryrefslogtreecommitdiff
path: root/gcc/cplus-dem.c
diff options
context:
space:
mode:
authorJeffrey A Law <law@cygnus.com>1998-04-01 23:18:11 +0000
committerJeff Law <law@gcc.gnu.org>1998-04-01 16:18:11 -0700
commitaefdd5abe0eae984fa04ea12851c9ff0f1695033 (patch)
tree663746db4bb4ca4fe0f1db7a069ec51d97f795bb /gcc/cplus-dem.c
parent729da3f5a8f4cc906c185e4cbc9bdbac657a1cca (diff)
downloadgcc-aefdd5abe0eae984fa04ea12851c9ff0f1695033.tar.gz
c-lex.c (yylex): Initialize traditional_type, ansi_type and type.
* c-lex.c (yylex): Initialize traditional_type, ansi_type and type. * caller-save.c (insert_save_restore): Initialize pat, code and numregs. * emit-rtl.c (push_to_sequence): Initialize top. (push_topmost_sequence): Likewise. * genattrtab.c (simplify_by_exploding): Initialize defval. * profile.c (branch_prob): Initialize dest. * rtl.h (note_stores): Remove duplicate prototype. (GEN_INT): Re-instate cast of second arg to HOST_WIDE_INT. Fix some warnings. * cplus-dem.c (gnu_special): Don't get confused by .<digits> strings that are not actually lengths. A change from libiberty that didn't make it into the gcc copy. From-SVN: r18942
Diffstat (limited to 'gcc/cplus-dem.c')
-rw-r--r--gcc/cplus-dem.c9
1 files changed, 9 insertions, 0 deletions
diff --git a/gcc/cplus-dem.c b/gcc/cplus-dem.c
index 898ab4bd500..acdbfa897e2 100644
--- a/gcc/cplus-dem.c
+++ b/gcc/cplus-dem.c
@@ -1901,6 +1901,15 @@ gnu_special (work, mangled, declp)
if (isdigit(*mangled[0]))
{
n = consume_count(mangled);
+ /* We may be seeing a too-large size, or else a
+ ".<digits>" indicating a static local symbol. In
+ any case, declare victory and move on; *don't* try
+ to use n to allocate. */
+ if (n >= strlen (*mangled))
+ {
+ success = 1;
+ break;
+ }
}
else
{