diff options
Diffstat (limited to 'gcc/cplus-dem.c')
-rw-r--r-- | gcc/cplus-dem.c | 10 |
1 files changed, 8 insertions, 2 deletions
diff --git a/gcc/cplus-dem.c b/gcc/cplus-dem.c index da0ffff..a7f8680 100644 --- a/gcc/cplus-dem.c +++ b/gcc/cplus-dem.c @@ -1067,11 +1067,17 @@ demangle_template (work, mangled, tname, trawname) { char *p = xmalloc (symbol_len + 1), *q; strncpy (p, *mangled, symbol_len); + p [symbol_len] = '\0'; q = cplus_demangle (p, work->options); string_appendn (tname, "&", 1); - string_append (tname, q); + if (q) + { + string_append (tname, q); + free (q); + } + else + string_append (tname, p); free (p); - free (q); } *mangled += symbol_len; } |