mirror of git://gcc.gnu.org/git/gcc.git
cp-demangle.c (d_encoding): Exit early on error.
* cp-demangle.c (d_encoding): Exit early on error. (d_pointer_to_member_type): Exit early if cplus_demangle_type returns NULL. (cplus_demangle_type): Likewise. * testsuite/demangle-expected: New testcase. From-SVN: r122972
This commit is contained in:
parent
ba502ad6be
commit
771904f1e6
|
@ -1,3 +1,11 @@
|
||||||
|
2007-03-15 Geoffrey Keating <geoffk@apple.com>
|
||||||
|
|
||||||
|
* cp-demangle.c (d_encoding): Exit early on error.
|
||||||
|
(d_pointer_to_member_type): Exit early if cplus_demangle_type
|
||||||
|
returns NULL.
|
||||||
|
(cplus_demangle_type): Likewise.
|
||||||
|
* testsuite/demangle-expected: New testcase.
|
||||||
|
|
||||||
2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
|
2007-03-01 Brooks Moses <brooks.moses@codesourcery.com>
|
||||||
|
|
||||||
* Makefile.in: Add install-pdf target as copied from
|
* Makefile.in: Add install-pdf target as copied from
|
||||||
|
|
|
@ -1067,7 +1067,7 @@ d_encoding (struct d_info *di, int top_level)
|
||||||
}
|
}
|
||||||
|
|
||||||
peek = d_peek_char (di);
|
peek = d_peek_char (di);
|
||||||
if (peek == '\0' || peek == 'E')
|
if (dc == NULL || peek == '\0' || peek == 'E')
|
||||||
return dc;
|
return dc;
|
||||||
return d_make_comp (di, DEMANGLE_COMPONENT_TYPED_NAME, dc,
|
return d_make_comp (di, DEMANGLE_COMPONENT_TYPED_NAME, dc,
|
||||||
d_bare_function_type (di, has_return_type (dc)));
|
d_bare_function_type (di, has_return_type (dc)));
|
||||||
|
@ -1780,7 +1780,7 @@ cplus_demangle_type (struct d_info *di)
|
||||||
if (pret == NULL)
|
if (pret == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
*pret = cplus_demangle_type (di);
|
*pret = cplus_demangle_type (di);
|
||||||
if (! d_add_substitution (di, ret))
|
if (! *pret || ! d_add_substitution (di, ret))
|
||||||
return NULL;
|
return NULL;
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -2135,6 +2135,8 @@ d_pointer_to_member_type (struct d_info *di)
|
||||||
if (pmem == NULL)
|
if (pmem == NULL)
|
||||||
return NULL;
|
return NULL;
|
||||||
*pmem = cplus_demangle_type (di);
|
*pmem = cplus_demangle_type (di);
|
||||||
|
if (*pmem == NULL)
|
||||||
|
return NULL;
|
||||||
|
|
||||||
if (pmem != &mem && (*pmem)->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
|
if (pmem != &mem && (*pmem)->type != DEMANGLE_COMPONENT_FUNCTION_TYPE)
|
||||||
{
|
{
|
||||||
|
|
|
@ -3838,3 +3838,7 @@ _ZNSA
|
||||||
--format=gnu-v3
|
--format=gnu-v3
|
||||||
_ZNT
|
_ZNT
|
||||||
_ZNT
|
_ZNT
|
||||||
|
# Dereferencing NULL in d_pointer_to_member_type
|
||||||
|
--format=gnu-v3
|
||||||
|
_Z1aMark
|
||||||
|
_Z1aMark
|
||||||
|
|
Loading…
Reference in New Issue