Commit f26deb3d by Ian Lance Taylor Committed by Ian Lance Taylor

cp-demangle.c (d_demangle): Only return success if we consumed the entire demangled string.

	* cp-demangle.c (d_demangle): Only return success if we consumed
	the entire demangled string.
	(is_ctor_or_dtor): Likewise.

From-SVN: r74129
parent be571b77
2003-11-29 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (d_demangle): Only return success if we consumed
the entire demangled string.
(is_ctor_or_dtor): Likewise.
* testsuite/demangle-expected: Revert one part of 2003-06-26 patch
to restore expected result of EDG test case to original expected
result.
2003-11-26 Ian Lance Taylor <ian@wasabisystems.com>
* cp-demangle.c (struct d_print_mod): Add templates field.
......
......@@ -3324,7 +3324,7 @@ d_print_cast (dpi, dc)
/* It appears that for a templated cast operator, we need to put
the template parameters in scope for the operator name, but
not for the parameters. The effect is that we need to handle
the template printing here. FIXME: Verify this. */
the template printing here. */
hold_dpm = dpi->modifiers;
dpi->modifiers = NULL;
......@@ -3456,6 +3456,11 @@ d_demangle (mangled, options, palc)
else
dc = d_type (&di);
/* If we didn't consume the entire mangled string, then we didn't
successfully demangle it. */
if (d_peek_char (&di) != '\0')
dc = NULL;
#ifdef CP_DEMANGLE_DEBUG
if (dc == NULL)
printf ("failed demangling\n");
......@@ -3657,7 +3662,7 @@ is_ctor_or_dtor (mangled, ctor_kind, dtor_kind)
dc = d_mangled_name (&di, 1);
if (dc == NULL)
if (dc == NULL || d_peek_char (&di) != '\0')
return 0;
while (dc != NULL)
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment