aboutsummaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
authordrh <>2023-04-28 23:38:54 +0000
committerdrh <>2023-04-28 23:38:54 +0000
commit8f3fe2ead2103c766380081520b1579481f661d4 (patch)
tree7b58db70692b6d3db1ee68164f85aa7a58ee53fa /src/json.c
parent6e2de57963198789e6df238962351fa4b840851e (diff)
downloadsqlite-8f3fe2ead2103c766380081520b1579481f661d4.tar.gz
sqlite-8f3fe2ead2103c766380081520b1579481f661d4.zip
Bug fixes in the logic to skip over JSON5 comments.
FossilOrigin-Name: c736b77a2fc5f8f2ba8f770adf05443dfdc3a9847ee519f411e661f76756d611
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/json.c b/src/json.c
index 83b02bf5a..f2856a841 100644
--- a/src/json.c
+++ b/src/json.c
@@ -963,12 +963,22 @@ static int json5Whitespace(const char *zIn){
for(j=n+3; z[j]!='/' || z[j-1]!='*'; j++){
if( z[j]==0 ) goto whitespace_done;
}
- n += j+1;
+ n = j+1;
break;
}else if( z[n+1]=='/' ){
int j;
- for(j=n+2; z[j] && z[j]!='\n'; j++){}
- n += j;
+ char c;
+ for(j=n+2; (c = z[j])!=0; j++){
+ if( c=='\n' || c=='\r' ) break;
+ if( 0xe2==(u8)c && 0x80==(u8)z[j+1]
+ && (0xa8==(u8)z[j+2] || 0xa9==(u8)z[j+2])
+ ){
+ j += 2;
+ break;
+ }
+ }
+ n = j;
+ if( z[n] ) n++;
break;
}
goto whitespace_done;