aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorAnthony Green <green@redhat.com>2002-10-08 07:10:49 +0000
committerAnthony Green <green@gcc.gnu.org>2002-10-08 07:10:49 +0000
commit6a921942a1af7a25bb2fff16a0cb247907b1b5b2 (patch)
treec1f14889aff906b0330f3f3085f42a0a8d4bcd06 /gcc
parent25009e02376191461adcc141eb1d98f6eed704f5 (diff)
downloadgcc-6a921942a1af7a25bb2fff16a0cb247907b1b5b2.zip
gcc-6a921942a1af7a25bb2fff16a0cb247907b1b5b2.tar.gz
gcc-6a921942a1af7a25bb2fff16a0cb247907b1b5b2.tar.bz2
Fix string concatenation bug.
From-SVN: r57912
Diffstat (limited to 'gcc')
-rw-r--r--gcc/java/ChangeLog4
-rw-r--r--gcc/java/parse.y15
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog
index e3f1c69..1ef902c 100644
--- a/gcc/java/ChangeLog
+++ b/gcc/java/ChangeLog
@@ -1,3 +1,7 @@
+2002-10-07 Anthony Green <green@redhat.com>
+
+ * parse.y (merge_string_cste): Fix bug in string concatenation.
+
2002-10-03 Michael Koch <konqueror@gmx.de>
* gcj.texi (Standard properties):
diff --git a/gcc/java/parse.y b/gcc/java/parse.y
index 217f74c..bb7155b 100644
--- a/gcc/java/parse.y
+++ b/gcc/java/parse.y
@@ -13773,8 +13773,19 @@ merge_string_cste (op1, op2, after)
string = null_pointer;
else if (TREE_TYPE (op2) == char_type_node)
{
- ch[0] = (char )TREE_INT_CST_LOW (op2);
- ch[1] = '\0';
+ /* Convert the character into UTF-8. */
+ unsigned char c = (unsigned char) TREE_INT_CST_LOW (op2);
+ unsigned char *p = (unsigned char *) ch;
+ if (0x01 <= c
+ && c <= 0x7f)
+ *p++ = c;
+ else
+ {
+ *p++ = c >> 6 | 0xc0;
+ *p++ = c & 0x3f | 0x80;
+ }
+ *p = '\0';
+
string = ch;
}
else