From: dan Date: Thu, 10 Apr 2025 20:52:47 +0000 (+0000) Subject: Fix a memory leak in sqlite3session_diff(). X-Git-Tag: major-release~104 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=0aa95099f5003dc99f599ab77ac0004950b281ef;p=thirdparty%2Fsqlite.git Fix a memory leak in sqlite3session_diff(). FossilOrigin-Name: a6cbc5db1c4973ea236874bd9c24cd86dc48fbc7a10e424896c0407c7c32ce6a --- diff --git a/ext/session/sessionD.test b/ext/session/sessionD.test index 17cb13d4ea..43ec03b447 100644 --- a/ext/session/sessionD.test +++ b/ext/session/sessionD.test @@ -282,7 +282,6 @@ proc do_sessions_diff_error {tn db tbl err} { } # Test that it is an error if the named db is missing. -breakpoint do_sessions_diff_error 5.1 nosuchdb t1 { 1 {SQLITE_SCHEMA - no such table: nosuchdb.t1} } @@ -297,4 +296,13 @@ do_sessions_diff_error 5.3 two t1 { 1 {SQLITE_SCHEMA - table schemas do not match} } +do_test 5.4 { + sqlite3session S db main + + catch {S diff two blue} + catch {S diff two blue} + + S delete +} {} + finish_test diff --git a/ext/session/sqlite3session.c b/ext/session/sqlite3session.c index d049f69862..a8dd1d9be2 100644 --- a/ext/session/sqlite3session.c +++ b/ext/session/sqlite3session.c @@ -1209,6 +1209,8 @@ static int sessionInitTable( if( pTab->nCol==0 ){ u8 *abPK; assert( pTab->azCol==0 || pTab->abPK==0 ); + sqlite3_free(pTab->azCol); + pTab->abPK = 0; rc = sessionTableInfo(pSession, db, zDb, pTab->zName, &pTab->nCol, &pTab->nTotalCol, 0, &pTab->azCol, &pTab->azDflt, &pTab->aiIdx, &abPK, diff --git a/manifest b/manifest index 2befe0ebac..580bc0184f 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Improved\sdetection\sof\srun-time\serrors\s(ex:\sOOM\serrors)\sin\sspeedtest1. -D 2025-04-10T19:54:56.037 +C Fix\sa\smemory\sleak\sin\ssqlite3session_diff(). +D 2025-04-10T20:52:47.688 F .fossil-settings/binary-glob 61195414528fb3ea9693577e1980230d78a1f8b0a54c78cf1b9b24d0a409ed6a x F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea @@ -589,7 +589,7 @@ F ext/session/session9.test 4e3aff62d6b4294498ddbe309076de06f4fddffad4fe5f5a6c03 F ext/session/sessionA.test 1feeab0b8e03527f08f2f1defb442da25480138f F ext/session/sessionB.test c4fb7f8a688787111606e123a555f18ee04f65bb9f2a4bb2aa71d55ce4e6d02c F ext/session/sessionC.test f8a5508bc059ae646e5ec9bdbca66ad24bc92fe99fda5790ac57e1f59fce2fdf -F ext/session/sessionD.test 9e38ee4efd80722b7e9b73fa0019775ff1d9ccb98f22d878f44ad389582bbdc4 +F ext/session/sessionD.test 470ff917dc849e2eb78142ade63aaabd729d773833cff0ff01bca0eda68a21ce F ext/session/sessionE.test b2010949c9d7415306f64e3c2072ddabc4b8250c98478d3c0c4d064bce83111d F ext/session/sessionF.test d37ed800881e742c208df443537bf29aa49fd56eac520d0f0c6df3e6320f3401 F ext/session/sessionG.test 3efe388282d641b65485b5462e67851002cd91a282dc95b685d085eb8efdad0a @@ -617,7 +617,7 @@ F ext/session/sessionrowid.test 85187c2f1b38861a5844868126f69f9ec62223a03449a98a F ext/session/sessionsize.test 8fcf4685993c3dbaa46a24183940ab9f5aa9ed0d23e5fb63bfffbdb56134b795 F ext/session/sessionstat1.test 5e718d5888c0c49bbb33a7a4f816366db85f59f6a4f97544a806421b85dc2dec F ext/session/sessionwor.test 6fd9a2256442cebde5b2284936ae9e0d54bde692d0f5fd009ecef8511f4cf3fc -F ext/session/sqlite3session.c 1a28245b9814542c1b9c8f3064fc63a91b341833879b27246a0ea8cf10257069 +F ext/session/sqlite3session.c 7a8816d56940c464c74706dfb02f18129b290655df1ccb8648228a7d436141f2 F ext/session/sqlite3session.h 532561f5b181bc623c25bfa0ecfd1f115bc9a2b42ec96fee8a67b1a10f3cc42c F ext/session/test_session.c af162108e8dc40cb9fe0e876e0155cecabcb49e82e5939677d21451e36160283 F ext/wasm/EXPORTED_FUNCTIONS.fiddle.in 27450c8b8c70875a260aca55435ec927068b34cef801a96205adb81bdcefc65c @@ -2216,8 +2216,8 @@ F tool/version-info.c 3b36468a90faf1bbd59c65fd0eb66522d9f941eedd364fabccd7227350 F tool/warnings-clang.sh bbf6a1e685e534c92ec2bfba5b1745f34fb6f0bc2a362850723a9ee87c1b31a7 F tool/warnings.sh 49a486c5069de041aedcbde4de178293e0463ae9918ecad7539eedf0ec77a139 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 578e9fedeaaacd152ae1988920e6c9a0c43f664e2f9461c0994ba427ae1688e7 -R ba4a44d30114309e9b2a1e00908db202 -U drh -Z 4f5762aa26eeee7e23b8bf7e772aabcd +P 0e5e0e2f558a417d57c01a2d62cb2117d2adf6ddbc62e6a0208ae23f19b05347 +R ea8e02173c6f4e7238e9e39c21ec2d22 +U dan +Z fad13ff67cc688b0b5e83e82f9779719 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 08470faabe..97db019baa 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -0e5e0e2f558a417d57c01a2d62cb2117d2adf6ddbc62e6a0208ae23f19b05347 +a6cbc5db1c4973ea236874bd9c24cd86dc48fbc7a10e424896c0407c7c32ce6a