| Submitter | Ian Taylor |
|---|---|
| Date | Sept. 22, 2012, 7:19 a.m. |
| Message ID | <mcrhaqqo77j.fsf@google.com> |
| Download | mbox | patch |
| Permalink | /patch/186106/ |
| State | New |
| Headers | show |
Comments
Patch
diff -r 2a400cc3eae6 libgo/runtime/go-rune.c --- a/libgo/runtime/go-rune.c Fri Sep 21 23:51:25 2012 -0700 +++ b/libgo/runtime/go-rune.c Fri Sep 21 23:57:48 2012 -0700 @@ -53,6 +53,14 @@ *rune = (((c & 0xf) << 12) + ((c1 & 0x3f) << 6) + (c2 & 0x3f)); + + if (*rune >= 0xd800 && *rune < 0xe000) + { + /* Invalid surrogate half; return replace character. */ + *rune = 0xfffd; + return 1; + } + return 3; }