From: dan Date: Tue, 7 Sep 2021 16:05:48 +0000 (+0000) Subject: Fix a memory leak in fts5 that could occur when writing to an fts5 table that is... X-Git-Tag: version-3.37.0~260 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=eb84c6ef35896fb6c269115ff9fb67e5e3fb8e35;p=thirdparty%2Fsqlite.git Fix a memory leak in fts5 that could occur when writing to an fts5 table that is being scanned by an fts5vocab cursor. FossilOrigin-Name: 1183552de10b64a776874a23be8962c0693e5e0cd1a191ea8fa5d6a02b691e4a --- diff --git a/ext/fts5/fts5_index.c b/ext/fts5/fts5_index.c index ea10b357c7..e35bcf0807 100644 --- a/ext/fts5/fts5_index.c +++ b/ext/fts5/fts5_index.c @@ -866,6 +866,8 @@ static void fts5StructureMakeWritable(int *pRc, Fts5Structure **pp){ } memcpy(pLvl->aSeg, p->aLevel[i].aSeg, nByte); } + p->nRef--; + pNew->nRef = 1; } *pp = pNew; } diff --git a/ext/fts5/test/fts5vocab2.test b/ext/fts5/test/fts5vocab2.test index baef718879..6f7aad329c 100644 --- a/ext/fts5/test/fts5vocab2.test +++ b/ext/fts5/test/fts5vocab2.test @@ -275,6 +275,11 @@ do_catchsql_test 5.1 { INSERT INTO t1 SELECT rowid FROM v1 } {1 {query aborted}} +do_catchsql_test 5.2 { + DELETE FROM t1 WHERE rowid>100; + INSERT INTO t1 SELECT randomblob(3000) FROM v1 +} {1 {query aborted}} + finish_test diff --git a/manifest b/manifest index 1ba2fdf00e..4245c2aced 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sa\spotential\sNULL\spointer\sdeference\sin\sthe\sLIKE\soptimization.\s\sThe\nproblem\swas\sintroduced\sby\sthe\saddition\sof\sgenerated\scolumns\nin\scheck-in\s[b855acf1831943b3]\s(SQLite\sversion\s3.31.0,\s2020-01-22).\nReported\sby\sWang\sKe\sin\n[forum/forumpost/699b44b3ee|forum\spost\s699b44b3ee]. -D 2021-09-07T15:41:25.656 +C Fix\sa\smemory\sleak\sin\sfts5\sthat\scould\soccur\swhen\swriting\sto\san\sfts5\stable\sthat\sis\sbeing\sscanned\sby\san\sfts5vocab\scursor. +D 2021-09-07T16:05:48.374 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -119,7 +119,7 @@ F ext/fts5/fts5_buffer.c 89a51b37c4aa1c02c1ec24c18c55196c0693b29a752fedfd036938d F ext/fts5/fts5_config.c 8336d0ff6db0933f63cfec8ae0ab76e68393259cbccc0b46e1f79f7fa1842ff3 F ext/fts5/fts5_expr.c 6ea447b0cb1888110087a8c04133817b0ccf964fe22414371b0e32189a556533 F ext/fts5/fts5_hash.c 1aa93c9b5f461afba66701ee226297dc78402b3bdde81e90a10de5fe3df14959 -F ext/fts5/fts5_index.c 99d3242d8416c2bb0c8e6e44e9259aac4386ea9e4f6fd0c740733583b72a4a60 +F ext/fts5/fts5_index.c 742ba7ecfbd2dc24fe1204fc9c8ed0b77b05d5c29d120f1f00dac44beb788d75 F ext/fts5/fts5_main.c 35ebbcae681a4a40027c47bc2e94d7e7c81e331dc406bb9b23c546454ee8f98a F ext/fts5/fts5_storage.c 58ba71e6cd3d43a5735815e7956ee167babb4d2cbfe206905174792af4d09d75 F ext/fts5/fts5_tcl.c b1445cbe69908c411df8084a10b2485500ac70a9c747cdc8cda175a3da59d8ae @@ -229,7 +229,7 @@ F ext/fts5/test/fts5unindexed.test 9021af86a0fb9fc616f7a69a996db0116e7936d0db638 F ext/fts5/test/fts5update.test b8affd796e45c94a4d19ad5c26606ea06065a0f162a9562d9f005b5a80ccf0bc F ext/fts5/test/fts5version.test c8f2cc105f0abf0224965f93e584633dee3e06c91478bc67e468f7cfdf97fd6a F ext/fts5/test/fts5vocab.test 7ed80d9af1ddaaa1637da05e406327b5aac250848bc604c1c1cc667908b87760 -F ext/fts5/test/fts5vocab2.test c9674cf0ffc0384162cdc78828189bb4ed4d54e2798063b5d737e50704a2db5c +F ext/fts5/test/fts5vocab2.test 681980e92e031c9f3fe8d9c149189e876c108da2fb0fb3a25bd8a9b94bff8f68 F ext/fts5/tool/fts5speed.tcl b0056f91a55b2d1a3684ec05729de92b042e2f85 F ext/fts5/tool/fts5txt2db.tcl c0d43c8590656f8240e622b00957b3a0facc49482411a9fdc2870b45c0c82f9f F ext/fts5/tool/loadfts5.tcl 95b03429ee6b138645703c6ca192c3ac96eaf093 @@ -1922,7 +1922,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P e751c2ec786b5c1a1c9640fdc3fde036879a2c32db2bd67fe7c72604780f67b8 -R f37ba84945d9bce14013653d370e48c8 -U drh -Z 4944ee0b1d475ff5a31f598f9aa7b030 +P b9417d400f4585004f434837022709f818044d5844fe208fe01595a6b226ef7d +R fbfb27d03a48669f1ac219704fa7775a +U dan +Z 18191cfbc7f1ec5803fe525828e4b53c diff --git a/manifest.uuid b/manifest.uuid index e07db5394c..0375c6ec5d 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b9417d400f4585004f434837022709f818044d5844fe208fe01595a6b226ef7d \ No newline at end of file +1183552de10b64a776874a23be8962c0693e5e0cd1a191ea8fa5d6a02b691e4a \ No newline at end of file