mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Improvements to JSON string dequoting.
FossilOrigin-Name: 196d66d34d9783622e6f2f79eafea1488fc6f5cf
This commit is contained in:
@@ -454,33 +454,29 @@ static void jsonReturn(
|
|||||||
}
|
}
|
||||||
for(i=1, j=0; i<n-1; i++){
|
for(i=1, j=0; i<n-1; i++){
|
||||||
char c = z[i];
|
char c = z[i];
|
||||||
if( c!='\\' && z[i+1] ){
|
if( c!='\\' ){
|
||||||
zOut[j++] = c;
|
zOut[j++] = c;
|
||||||
}else{
|
}else{
|
||||||
c = z[++i];
|
c = z[++i];
|
||||||
if( c=='u' && z[1] ){
|
if( c=='u' ){
|
||||||
u32 v = 0, k;
|
u32 v = 0, k;
|
||||||
for(k=0; k<4 && z[i+1]; i++, k++){
|
for(k=0; k<4 && i<n-2; i++, k++){
|
||||||
c = z[i+1];
|
c = z[i+1];
|
||||||
if( c>='0' && c<='9' ) v = v*16 + c - '0';
|
if( c>='0' && c<='9' ) v = v*16 + c - '0';
|
||||||
else if( c>='A' && c<='F' ) v = v*16 + c - 'A' + 10;
|
else if( c>='A' && c<='F' ) v = v*16 + c - 'A' + 10;
|
||||||
else if( c>='a' && c<='f' ) v = v*16 + c - 'a' + 10;
|
else if( c>='a' && c<='f' ) v = v*16 + c - 'a' + 10;
|
||||||
else break;
|
else break;
|
||||||
}
|
}
|
||||||
|
if( v==0 ) break;
|
||||||
if( v<=0x7f ){
|
if( v<=0x7f ){
|
||||||
zOut[j++] = v;
|
zOut[j++] = v;
|
||||||
}else if( v<=0x7ff ){
|
}else if( v<=0x7ff ){
|
||||||
zOut[j++] = 0xc0 | (v>>6);
|
zOut[j++] = 0xc0 | (v>>6);
|
||||||
zOut[j++] = 0x80 | (v&0x3f);
|
zOut[j++] = 0x80 | (v&0x3f);
|
||||||
}else if( v<=0xffff ){
|
}else{
|
||||||
zOut[j++] = 0xe0 | (v>>12);
|
zOut[j++] = 0xe0 | (v>>12);
|
||||||
zOut[j++] = 0x80 | ((v>>6)&0x3f);
|
zOut[j++] = 0x80 | ((v>>6)&0x3f);
|
||||||
zOut[j++] = 0x80 | (v&0x3f);
|
zOut[j++] = 0x80 | (v&0x3f);
|
||||||
}else if( v<=0x10ffff ){
|
|
||||||
zOut[j++] = 0xf0 | (v>>18);
|
|
||||||
zOut[j++] = 0x80 | ((v>>12)&0x3f);
|
|
||||||
zOut[j++] = 0x80 | ((v>>6)&0x3f);
|
|
||||||
zOut[j++] = 0x80 | (v&0x3f);
|
|
||||||
}
|
}
|
||||||
}else{
|
}else{
|
||||||
if( c=='b' ){
|
if( c=='b' ){
|
||||||
|
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Fix\scorner-case\sproblems\sin\sthe\stype\sand\satom\scolumns\sof\sjson_each()\sand\njson_tree().
|
C Improvements\sto\sJSON\sstring\sdequoting.
|
||||||
D 2015-08-24T02:32:04.608
|
D 2015-08-24T12:42:41.080
|
||||||
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
|
||||||
F Makefile.in e2218eb228374422969de7b1680eda6864affcef
|
F Makefile.in e2218eb228374422969de7b1680eda6864affcef
|
||||||
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
|
||||||
@@ -192,7 +192,7 @@ F ext/misc/eval.c f971962e92ebb8b0a4e6b62949463ee454d88fa2
|
|||||||
F ext/misc/fileio.c d4171c815d6543a9edef8308aab2951413cd8d0f
|
F ext/misc/fileio.c d4171c815d6543a9edef8308aab2951413cd8d0f
|
||||||
F ext/misc/fuzzer.c 4c84635c71c26cfa7c2e5848cf49fe2d2cfcd767
|
F ext/misc/fuzzer.c 4c84635c71c26cfa7c2e5848cf49fe2d2cfcd767
|
||||||
F ext/misc/ieee754.c b0362167289170627659e84173f5d2e8fee8566e
|
F ext/misc/ieee754.c b0362167289170627659e84173f5d2e8fee8566e
|
||||||
F ext/misc/json1.c 443f8b54b76042112f669c694683f7ecb2512580
|
F ext/misc/json1.c 541004e47235cefc2843ab03c100517452931913
|
||||||
F ext/misc/nextchar.c 35c8b8baacb96d92abbb34a83a997b797075b342
|
F ext/misc/nextchar.c 35c8b8baacb96d92abbb34a83a997b797075b342
|
||||||
F ext/misc/percentile.c bcbee3c061b884eccb80e21651daaae8e1e43c63
|
F ext/misc/percentile.c bcbee3c061b884eccb80e21651daaae8e1e43c63
|
||||||
F ext/misc/regexp.c af92cdaa5058fcec1451e49becc7ba44dba023dc
|
F ext/misc/regexp.c af92cdaa5058fcec1451e49becc7ba44dba023dc
|
||||||
@@ -1378,7 +1378,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
|
|||||||
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
|
||||||
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
|
F tool/warnings.sh 48bd54594752d5be3337f12c72f28d2080cb630b
|
||||||
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f
|
||||||
P 518d6220a12fb1289f699ef0821e6adfcd286ed0
|
P f0aba0e120074430cd7ad93291fcc97b8a25a054
|
||||||
R d6c92e3d9acd1a46fd49a9ba005fd842
|
R 3625d17566ea8cc316dd4952d6bffb99
|
||||||
U drh
|
U drh
|
||||||
Z 8270e043900b276b537309af17df590f
|
Z 6090b9f6d755a9917a579931aff72e9d
|
||||||
|
@@ -1 +1 @@
|
|||||||
f0aba0e120074430cd7ad93291fcc97b8a25a054
|
196d66d34d9783622e6f2f79eafea1488fc6f5cf
|
Reference in New Issue
Block a user