diff options
author | drh <> | 2023-04-28 23:38:54 +0000 |
---|---|---|
committer | drh <> | 2023-04-28 23:38:54 +0000 |
commit | 8f3fe2ead2103c766380081520b1579481f661d4 (patch) | |
tree | 7b58db70692b6d3db1ee68164f85aa7a58ee53fa /src/json.c | |
parent | 6e2de57963198789e6df238962351fa4b840851e (diff) | |
download | sqlite-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.c | 16 |
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; |