diff options
author | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-11-26 23:27:29 +0000 |
---|---|---|
committer | Ian Lance Taylor <ian@gcc.gnu.org> | 2013-11-26 23:27:29 +0000 |
commit | 763d87526f385ac111986736dccd0e6848b85d33 (patch) | |
tree | 5262a40dd465830841d2131acb63eab83331249b /libgo/runtime/go-int-array-to-string.c | |
parent | b168a8dfcc8e22dd932d460159d81291a9fe1ae6 (diff) | |
download | gcc-763d87526f385ac111986736dccd0e6848b85d33.zip gcc-763d87526f385ac111986736dccd0e6848b85d33.tar.gz gcc-763d87526f385ac111986736dccd0e6848b85d33.tar.bz2 |
runtime: Fix handling of surrogate pairs in string([]rune).
From-SVN: r205422
Diffstat (limited to 'libgo/runtime/go-int-array-to-string.c')
-rw-r--r-- | libgo/runtime/go-int-array-to-string.c | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/libgo/runtime/go-int-array-to-string.c b/libgo/runtime/go-int-array-to-string.c index d93fe65..f372131 100644 --- a/libgo/runtime/go-int-array-to-string.c +++ b/libgo/runtime/go-int-array-to-string.c @@ -30,6 +30,8 @@ __go_int_array_to_string (const void* p, intgo len) if (v < 0 || v > 0x10ffff) v = 0xfffd; + else if (0xd800 <= v && v <= 0xdfff) + v = 0xfffd; if (v <= 0x7f) slen += 1; @@ -56,6 +58,8 @@ __go_int_array_to_string (const void* p, intgo len) character. */ if (v < 0 || v > 0x10ffff) v = 0xfffd; + else if (0xd800 <= v && v <= 0xdfff) + v = 0xfffd; if (v <= 0x7f) *s++ = v; |