2001-02-09 Alexandre Petit-Bianco <apbianco@redhat.com>
authorapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Feb 2001 20:29:08 +0000 (20:29 +0000)
committerapbianco <apbianco@138bc75d-0d04-0410-961f-82ee72b054a4>
Fri, 9 Feb 2001 20:29:08 +0000 (20:29 +0000)
* 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)

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@39570 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/java/ChangeLog
gcc/java/mangle_name.c

index 955cc5b..8070ba7 100644 (file)
@@ -1,5 +1,12 @@
 2001-02-09  Alexandre Petit-Bianco  <apbianco@redhat.com>
 
+       * 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  <apbianco@redhat.com>
+
        * jvgenmain.c (error): Reversed 2001-02-01 deletion.
 
 2001-02-08  Alexandre Petit-Bianco  <apbianco@cygnus.com>
index b074f1e..101dee7 100644 (file)
@@ -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;
            }