From 7fd31a8480e444cb9348b80bf8f4d4104c69beba Mon Sep 17 00:00:00 2001 From: Fred Fish Date: Mon, 11 May 1992 20:32:03 +0000 Subject: [PATCH] * cplus-dem.c (demangle_signature): Recognize misplaced '_' to avoid infinite loops while demangling bogus mangled names. * valprint.c (type_print_base): Minor fix for GNU style guide conformance. --- gdb/ChangeLog | 7 +++++++ gdb/cplus-dem.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 1 deletion(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e9983bbbb0a..6d00d435327 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,10 @@ +Mon May 11 13:27:46 1992 Fred Fish (fnf@cygnus.com) + + * cplus-dem.c (demangle_signature): Recognize misplaced '_' to + avoid infinite loops while demangling bogus mangled names. + * valprint.c (type_print_base): Minor fix for GNU style guide + conformance. + Sat May 9 18:02:17 1992 Fred Fish (fnf at fishpond) * Makefile.in (VERSION): Bump to 4.5.3 diff --git a/gdb/cplus-dem.c b/gdb/cplus-dem.c index d4bb48e916b..2c4d54bc337 100644 --- a/gdb/cplus-dem.c +++ b/gdb/cplus-dem.c @@ -481,6 +481,15 @@ demangle_signature (declp, mangled, work) success = demangle_template (declp, mangled, work); break; + case '_': + /* At the outermost level, we cannot have a return type specified, + so if we run into another '_' at this point we are dealing with + a mangled name that is either bogus, or has been mangled by + some algorithm we don't know how to deal with. So just + reject the entire demangling. */ + success = 0; + break; + default: #ifdef GNU_DEMANGLING /* Assume we have stumbled onto the first outermost function @@ -497,7 +506,7 @@ demangle_signature (declp, mangled, work) break; } #ifdef GNU_DEMANGLING - if (expect_func) + if (success && expect_func) { func_done = 1; success = demangle_args (declp, mangled, work); -- 2.30.2