aboutsummaryrefslogtreecommitdiff
path: root/src/json.c
diff options
context:
space:
mode:
authordrh <>2023-10-17 13:41:41 +0000
committerdrh <>2023-10-17 13:41:41 +0000
commit52d934e3164f5a0666b2f5f00b9ab4aee9ef9618 (patch)
tree56d27069b792933e265997232cd80fcd594265bc /src/json.c
parent5e0b11bda77dc6d48932601ffded969faec75aad (diff)
downloadsqlite-52d934e3164f5a0666b2f5f00b9ab4aee9ef9618.tar.gz
sqlite-52d934e3164f5a0666b2f5f00b9ab4aee9ef9618.zip
Fix a JSON bug introduced by the optimization of [df099ad713011b67] and
first appearing in 3.43.0. The problem occurs when doing a JSON_EXTRACT() on an array element that was added by JSON_SET() without first reparsing. Reported by [forum:/forumpost/fc0e3f1e2a|forum post fc0e3f1e2a]. FossilOrigin-Name: e5099c549a1d8959d4015516f090b8e6438e517a64b20651175bf5413d94fb58
Diffstat (limited to 'src/json.c')
-rw-r--r--src/json.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/src/json.c b/src/json.c
index e334b2214..bb1834dd8 100644
--- a/src/json.c
+++ b/src/json.c
@@ -2156,6 +2156,7 @@ static JsonNode *jsonLookupStep(
if( (pRoot[j].jnFlags & JNODE_REMOVE)==0 || pParse->useMod==0 ) i--;
j += jsonNodeSize(&pRoot[j]);
}
+ if( i==0 && j<=pRoot->n ) break;
if( (pRoot->jnFlags & JNODE_APPEND)==0 ) break;
if( pParse->useMod==0 ) break;
assert( pRoot->eU==2 );