Fixing string-ref on 4-byte utf8 chars.

This commit is contained in:
Alex Shinn 2014-04-26 12:40:31 +09:00
parent 64ad4886e9
commit 985deba95d

2
sexp.c
View file

@ -960,7 +960,7 @@ sexp sexp_string_utf8_ref (sexp ctx, sexp str, sexp i) {
else if (*p < 0xF0)
return sexp_make_character(((p[0]&0x1F)<<12) + ((p[1]&0x3F)<<6) + (p[2]&0x3F));
else
return sexp_make_character(((p[0]&0x0F)<<16) + ((p[1]&0x3F)<<6) + ((p[2]&0x3F)<<6) + (p[2]&0x3F));
return sexp_make_character(((p[0]&0x0F)<<18) + ((p[1]&0x3F)<<12) + ((p[2]&0x3F)<<6) + (p[3]&0x3F));
}
void sexp_utf8_encode_char (unsigned char* p, int len, int c) {