From: drh Date: Sat, 16 Nov 2013 23:03:06 +0000 (+0000) Subject: Fix an OOM-recovery problem in the DELETE code generator. X-Git-Tag: version-3.8.2~81^2~2 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=52a82e69661ea8787bfc5183fb9f806f579413dc;p=thirdparty%2Fsqlite.git Fix an OOM-recovery problem in the DELETE code generator. FossilOrigin-Name: dc7be158b82ab9156d0fcdf3394f881eac4d23c3 --- diff --git a/manifest b/manifest index dd8429d568..57e956a2dd 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Combine\sthe\srowid\sand\sWITHOUT\sROWID\spaths\sfor\sDELETE\sinto\sa\ssingle\spath. -D 2013-11-16T22:48:52.173 +C Fix\san\sOOM-recovery\sproblem\sin\sthe\sDELETE\scode\sgenerator. +D 2013-11-16T23:03:06.762 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 8a07bebafbfda0eb67728f4bd15a36201662d1a1 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -174,7 +174,7 @@ F src/callback.c f99a8957ba2adf369645fac0db09ad8adcf1caa2 F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/ctime.c ea4b7f3623a0fcb1146e7f245d7410033e86859c F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 -F src/delete.c 1bcc9d7f2e48cf9043a44bdbd333c38c2ef6676a +F src/delete.c af69db684408d06a446e2ba2d050399773f91b9b F src/expr.c 1a295d8b0a2ba08919ad9300ebf7b67988ff4030 F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fkey.c 78364daed38e26269c53ddb94c515bceac1063c6 @@ -1140,7 +1140,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff -P e4d220a381388f900a95d1b656a82f14c837f92e -R d0df7aac2a46f76fbd08b30c4f269d2a +P c4734b881a64a9d21d03a14e901785797577fbd8 +R 10d8931262d0ae5f1928488f5d08f78e U drh -Z 2d947a1a8ff0ceb82e3a6fad03406bbd +Z 412c615fb9ef758b4ed11a541f1ecdcc diff --git a/manifest.uuid b/manifest.uuid index e3dbc37284..bdf0f87e31 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -c4734b881a64a9d21d03a14e901785797577fbd8 \ No newline at end of file +dc7be158b82ab9156d0fcdf3394f881eac4d23c3 \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index 35010a483a..a110e89937 100644 --- a/src/delete.c +++ b/src/delete.c @@ -433,7 +433,10 @@ void sqlite3DeleteFrom( */ nKey = nPk; /* OP_Found will use an unpacked key */ aToOpen = sqlite3DbMallocRaw(db, nIdx+2); - if( aToOpen==0 ) goto delete_from_cleanup; + if( aToOpen==0 ){ + sqlite3WhereEnd(pWInfo); + goto delete_from_cleanup; + } memset(aToOpen, 1, nIdx+1); aToOpen[nIdx+1] = 0; if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iTabCur] = 0;