From aeaf1d9da92666aa9018af22dd7201c89d3986c5 Mon Sep 17 00:00:00 2001 From: dj Date: Thu, 20 Nov 2003 02:01:32 +0000 Subject: [PATCH] merge from gcc --- libiberty/ChangeLog | 5 +++++ libiberty/cp-demangle.c | 8 +++++--- 2 files changed, 10 insertions(+), 3 deletions(-) diff --git a/libiberty/ChangeLog b/libiberty/ChangeLog index 26485fcedb..fc3544d1cf 100644 --- a/libiberty/ChangeLog +++ b/libiberty/ChangeLog @@ -1,3 +1,8 @@ +2003-11-19 Mark Mitchell + + * cp-demangle.c (demangle_type): Correct thinko in substitution + processing. + 2003-11-18 Ian Lance Taylor * cp-demangle.c (demangle_operator_name): Remove space before diff --git a/libiberty/cp-demangle.c b/libiberty/cp-demangle.c index a707a83340..8caa733c91 100644 --- a/libiberty/cp-demangle.c +++ b/libiberty/cp-demangle.c @@ -2557,10 +2557,12 @@ demangle_type (dm) case 'S': /* First check if this is a special substitution. If it is, this is a . Special substitutions have a - letter following the `S'; other substitutions have a digit - or underscore. */ + lower-case letter following the `S'; other substitutions + have a digit, upper-case letter, or underscore. */ peek_next = peek_char_next (dm); - if (IS_DIGIT (peek_next) || peek_next == '_') + if (IS_DIGIT (peek_next) + || (peek_next >= 'A' && peek_next <= 'Z') + || peek_next == '_') { RETURN_IF_ERROR (demangle_substitution (dm, &encode_return_type)); -- 2.11.0