41 lines
1.6 KiB
Diff
41 lines
1.6 KiB
Diff
|
diff --git a/ext/json/parser/parser.c b/ext/json/parser/parser.c
|
||
|
index d1d14c7..1773616 100644
|
||
|
--- a/ext/json/parser/parser.c
|
||
|
+++ b/ext/json/parser/parser.c
|
||
|
@@ -1293,6 +1293,7 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
|
||
|
{
|
||
|
char *p = string, *pe = string, *unescape;
|
||
|
int unescape_len;
|
||
|
+ char buf[4];
|
||
|
|
||
|
while (pe < stringEnd) {
|
||
|
if (*pe == '\\') {
|
||
|
@@ -1325,7 +1326,6 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
|
||
|
if (pe > stringEnd - 4) {
|
||
|
return Qnil;
|
||
|
} else {
|
||
|
- char buf[4];
|
||
|
UTF32 ch = unescape_unicode((unsigned char *) ++pe);
|
||
|
pe += 3;
|
||
|
if (UNI_SUR_HIGH_START == (ch & 0xFC00)) {
|
||
|
diff --git a/ext/json/parser/parser.rl b/ext/json/parser/parser.rl
|
||
|
index e7d47e1..33e775c 100644
|
||
|
--- a/ext/json/parser/parser.rl
|
||
|
+++ b/ext/json/parser/parser.rl
|
||
|
@@ -393,6 +393,7 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
|
||
|
{
|
||
|
char *p = string, *pe = string, *unescape;
|
||
|
int unescape_len;
|
||
|
+ char buf[4];
|
||
|
|
||
|
while (pe < stringEnd) {
|
||
|
if (*pe == '\\') {
|
||
|
@@ -425,7 +426,6 @@ static VALUE json_string_unescape(VALUE result, char *string, char *stringEnd)
|
||
|
if (pe > stringEnd - 4) {
|
||
|
return Qnil;
|
||
|
} else {
|
||
|
- char buf[4];
|
||
|
UTF32 ch = unescape_unicode((unsigned char *) ++pe);
|
||
|
pe += 3;
|
||
|
if (UNI_SUR_HIGH_START == (ch & 0xFC00)) {
|