From: drh <> Date: Tue, 20 Aug 2024 17:24:42 +0000 (+0000) Subject: Fix a memory leak so that now all dev tests (including TH3) are passing. X-Git-Tag: version-3.47.0~215^2~5 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=27c680cc69f181a548d942168e45e37b498684a5;p=thirdparty%2Fsqlite.git Fix a memory leak so that now all dev tests (including TH3) are passing. FossilOrigin-Name: 3995c45fff0e4bd10bcf49cc16eb1050216426723c63ba56d3ae5ba738c34019 --- diff --git a/manifest b/manifest index 06a26110e0..a976440679 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Memory\sissues\sfixes\sso\sthat\smdevtest\snow\spasses. -D 2024-08-20T16:50:21.429 +C Fix\sa\smemory\sleak\sso\sthat\snow\sall\sdev\stests\s(including\sTH3)\sare\spassing. +D 2024-08-20T17:24:42.323 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -760,7 +760,7 @@ F src/printf.c 17054fb94ffcf7a28362e9a5af4a0f813bd0c52200ae408eeebddc81feed9274 F src/random.c 606b00941a1d7dd09c381d3279a058d771f406c5213c9932bbd93d5587be4b9c F src/resolve.c 9afed5fd7b9111633bdb74a73cdc47324e28e4dc6c27113e3e9aee38fb9422ab F src/rowset.c 8432130e6c344b3401a8874c3cb49fefe6873fec593294de077afea2dce5ec97 -F src/select.c 3e284895745f57de3b37b17fce9eb0e26bc54fccc94ea1ff5342be4360e3674b +F src/select.c 9aa44e562f2fbfa33e600e3f935369dd9a07e4beb89b344dfc7187dc2adc19ce F src/shell.c.in 94571558b0fb28c37a5cf6dbd6ea27285341023a28a8cb5795cd2768fab67704 F src/sqlite.h.in 1ad9110150773c38ebababbad11b5cb361bcd3997676dec1c91ac5e0416a7b86 F src/sqlite3.rc 5121c9e10c3964d5755191c80dd1180c122fc3a8 @@ -2205,8 +2205,8 @@ F vsixtest/vsixtest.tcl 6195aba1f12a5e10efc2b8c0009532167be5e301abe5b31385638080 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0 -P 8ff5dda8448d7e1a533d7f27db2573ce68fa9956b9d9847ced45e83c1f06bab0 -R c585d13f1a80cb4428e40ac20e746454 +P b249516f6a6650808e035ec219e762bf24dcb7c32a6235984b995d08d07d35d8 +R 5330111931e3ecff89186b5f2d6b0982 U drh -Z ce4831b3d2660999f30841c855773e8f +Z d58fa1c081ceed524dfd09ccfa304c4e # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 90e67e8d3a..0ffd5cf0fb 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -b249516f6a6650808e035ec219e762bf24dcb7c32a6235984b995d08d07d35d8 +3995c45fff0e4bd10bcf49cc16eb1050216426723c63ba56d3ae5ba738c34019 diff --git a/src/select.c b/src/select.c index 8bddc03bb4..0c10550fac 100644 --- a/src/select.c +++ b/src/select.c @@ -5600,12 +5600,17 @@ static int convertCompoundSelectToSubquery(Walker *pWalker, Select *p){ /* If we reach this point, that means the transformation is required. */ pParse = pWalker->pParse; + if( pParse->nErr ) return WRC_Abort; db = pParse->db; pNew = sqlite3DbMallocZero(db, sizeof(*pNew) ); if( pNew==0 ) return WRC_Abort; memset(&dummy, 0, sizeof(dummy)); pNewSrc = sqlite3SrcListAppendFromTerm(pParse,0,0,0,&dummy,pNew,0); - if( pNewSrc==0 ) return WRC_Abort; + assert( pNewSrc!=0 || pParse->nErr ); + if( pParse->nErr ){ + sqlite3SrcListDelete(db, pNewSrc); + return WRC_Abort; + } *pNew = *p; p->pSrc = pNewSrc; p->pEList = sqlite3ExprListAppend(pParse, 0, sqlite3Expr(db, TK_ASTERISK, 0));