From 1e97aa4083fc908cc500a1f53340dfa7b80a68f3 Mon Sep 17 00:00:00 2001 From: Alexandre Petit-Bianco Date: Fri, 9 Feb 2001 12:29:08 -0800 Subject: [PATCH] mangle_name.c (append_unicode_mangled_name): Emit `_' or `U' outside of the `__U' sequence too. 2001-02-09 Alexandre Petit-Bianco * mangle_name.c (append_unicode_mangled_name): Emit `_' or `U' outside of the `__U' sequence too. (unicode_mangling_length): Count `_' or `U' outside of the `__U' sequence too. (http://gcc.gnu.org/ml/gcc-patches/2001-02/msg00532.html) From-SVN: r39570 --- gcc/java/ChangeLog | 7 +++++++ gcc/java/mangle_name.c | 25 +++++++++++++++++++------ 2 files changed, 26 insertions(+), 6 deletions(-) diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index 955cc5b0c02..8070ba7153c 100644 --- a/gcc/java/ChangeLog +++ b/gcc/java/ChangeLog @@ -1,3 +1,10 @@ +2001-02-09 Alexandre Petit-Bianco + + * mangle_name (append_unicode_mangled_name): Emit `_' or `U' + outside of the `__U' sequence too. + (unicode_mangling_length): Count `_' or `U' outside of the `__U' + sequence too. + 2001-02-09 Alexandre Petit-Bianco * jvgenmain.c (error): Reversed 2001-02-01 deletion. diff --git a/gcc/java/mangle_name.c b/gcc/java/mangle_name.c index b074f1ed212..101dee7c7c2 100644 --- a/gcc/java/mangle_name.c +++ b/gcc/java/mangle_name.c @@ -113,6 +113,13 @@ append_unicode_mangled_name (name, len) uuU = 0; obstack_grow (mangle_obstack, "U_", 2); } + /* Otherwise, just reset uuU and emit the character we + have. */ + else + { + uuU = 0; + obstack_1grow (mangle_obstack, ch); + } continue; } sprintf (buf, "__U%x_", ch); @@ -156,19 +163,25 @@ unicode_mangling_length (name, len) if (ch == '_' || ch == 'U') { + /* It's always at least one character. */ + num_chars++; + /* Prepare to recognize __U */ if (ch == '_' && (uuU < 3)) - { - num_chars++; - uuU++; - } - /* We recognize __U that we wish to encode __U_ */ + uuU++; + + /* We recognize __U that we wish to encode __U_, we + count one more character. */ else if (ch == 'U' && (uuU == 2)) { - num_chars += 2; + num_chars++; need_escapes = 1; uuU = 0; } + /* Otherwise, just reset uuU */ + else + uuU = 0; + continue; } -- 2.30.2