diff options
author | green <green@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-10-08 07:10:49 +0000 |
---|---|---|
committer | green <green@138bc75d-0d04-0410-961f-82ee72b054a4> | 2002-10-08 07:10:49 +0000 |
commit | 6852f2fc61b56ec334882bee99854af11958d7fb (patch) | |
tree | c1f14889aff906b0330f3f3085f42a0a8d4bcd06 /gcc/java | |
parent | 86c487682108f117f01be15cc9f2ba03c4c1c7c4 (diff) | |
download | gcc-6852f2fc61b56ec334882bee99854af11958d7fb.tar.gz |
Fix string concatenation bug.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@57912 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/java')
-rw-r--r-- | gcc/java/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/java/parse.y | 15 |
2 files changed, 17 insertions, 2 deletions
diff --git a/gcc/java/ChangeLog b/gcc/java/ChangeLog index e3f1c69c16e..1ef902ca78f 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 217f74cda92..bb7155bafb6 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 |