]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
runtime: Fix handling of surrogate pairs in string([]rune).
authorIan Lance Taylor <ian@gcc.gnu.org>
Tue, 26 Nov 2013 23:27:29 +0000 (23:27 +0000)
committerIan Lance Taylor <ian@gcc.gnu.org>
Tue, 26 Nov 2013 23:27:29 +0000 (23:27 +0000)
From-SVN: r205422

libgo/runtime/go-int-array-to-string.c

index d93fe651d952d6d17e0e86c6d40c757eb803c30f..f37213125a2209cdebd98930b8b1c1d0efbc9b8f 100644 (file)
@@ -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;