diff options
author | Ian Lance Taylor <iant@google.com> | 2011-07-26 14:28:23 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2011-07-26 14:28:23 +0000 |
commit | f2e6f32e600beadb5273bdd49cbe2e32b37b3408 (patch) | |
tree | 9f86d2c5b414f5b66cf20d81c2c01016b551f038 | |
parent | 9f61fd17476282a3c279b3b70c7cee1e12b265f5 (diff) | |
download | gcc-f2e6f32e600beadb5273bdd49cbe2e32b37b3408.zip gcc-f2e6f32e600beadb5273bdd49cbe2e32b37b3408.tar.gz gcc-f2e6f32e600beadb5273bdd49cbe2e32b37b3408.tar.bz2 |
cp-demangle.c (d_print_init): Initialize pack_index field.
* cp-demangle.c (d_print_init): Initialize pack_index field.
(d_print_comp): Check for NULL template argument.
* testsuite/demangle-expected: Add test case.
From-SVN: r176791
-rw-r--r-- | libiberty/ChangeLog | 6 | ||||
-rw-r--r-- | libiberty/cp-demangle.c | 10 | ||||
-rw-r--r-- | libiberty/testsuite/demangle-expected | 6 |
3 files changed, 21 insertions, 1 deletions
diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 97c50c0..1ceb0ee 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,9 @@ +2011-07-26 Ian Lance Taylor <iant@google.com> + + * cp-demangle.c (d_print_init): Initialize pack_index field. + (d_print_comp): Check for NULL template argument. + * testsuite/demangle-expected: Add test case. + 2011-07-22 Gerald Pfeifer <gerald@pfeifer.com> PR target/49817 diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index 29badbb..f41856b 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -1,5 +1,5 @@ /* Demangler for g++ V3 ABI. - Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 + Copyright (C) 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011 Free Software Foundation, Inc. Written by Ian Lance Taylor <ian@wasabisystems.com>. @@ -3306,6 +3306,7 @@ d_print_init (struct d_print_info *dpi, demangle_callbackref callback, dpi->last_char = '\0'; dpi->templates = NULL; dpi->modifiers = NULL; + dpi->pack_index = 0; dpi->flush_count = 0; dpi->callback = callback; @@ -3893,6 +3894,13 @@ d_print_comp (struct d_print_info *dpi, int options, struct demangle_component *a = d_lookup_template_argument (dpi, sub); if (a && a->type == DEMANGLE_COMPONENT_TEMPLATE_ARGLIST) a = d_index_template_argument (a, dpi->pack_index); + + if (a == NULL) + { + d_print_error (dpi); + return; + } + sub = a; } diff --git a/libiberty/testsuite/demangle-expected b/libiberty/testsuite/demangle-expected index 2dc74be..d3e7099 100644 --- a/libiberty/testsuite/demangle-expected +++ b/libiberty/testsuite/demangle-expected @@ -4010,6 +4010,12 @@ K<1, &S::m>::f() _ZN1KILi1EXadL_ZN1S1mEEEE1fEv K<1, &S::m>::f() # +# Used to crash -- binutils PR 13030. +--format=gnu-v3 +_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ +_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ +_ZSt10_ConstructI10CellBorderIS0_EEvPT_DpOT0_ +# # Ada (GNAT) tests. # # Simple test. |