aboutsummaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c13
1 files changed, 11 insertions, 2 deletions
diff --git a/src/json.c b/src/json.c
index 6c86d98f2..62e3d652f 100644
--- a/src/json.c
+++ b/src/json.c
@@ -1391,8 +1391,16 @@ json_parse_restart:
opcode = JSONB_TEXT;
parse_string:
cDelim = z[i];
- for(j=i+1; 1; j++){
- if( jsonIsOk[(unsigned char)z[j]] ) continue;
+ j = i+1;
+ while( 1 /*exit-by-break*/ ){
+ if( jsonIsOk[(u8)z[j]] ){
+ if( jsonIsOk[(u8)z[j+1]] ){
+ j += 2;
+ continue;
+ }else{
+ j += 1;
+ }
+ }
c = z[j];
if( c==cDelim ){
break;
@@ -1421,6 +1429,7 @@ json_parse_restart:
pParse->iErr = j;
return -1;
}
+ j++;
}
jsonBlobAppendNodeType(pParse, opcode, j-1-i);
jsonBlobAppendNBytes(pParse, (const u8*)&z[i+1], j-1-i);