1
0
mirror of https://github.com/sqlite/sqlite.git synced 2025-11-12 13:01:09 +03:00

Fix an OOM-recovery problem in the DELETE code generator.

FossilOrigin-Name: dc7be158b82ab9156d0fcdf3394f881eac4d23c3
This commit is contained in:
drh
2013-11-16 23:03:06 +00:00
parent 9612947260
commit 52a82e6966
3 changed files with 11 additions and 8 deletions

View File

@@ -1,5 +1,5 @@
C Combine\sthe\srowid\sand\sWITHOUT\sROWID\spaths\sfor\sDELETE\sinto\sa\ssingle\spath. C Fix\san\sOOM-recovery\sproblem\sin\sthe\sDELETE\scode\sgenerator.
D 2013-11-16T22:48:52.173 D 2013-11-16T23:03:06.762
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 8a07bebafbfda0eb67728f4bd15a36201662d1a1 F Makefile.in 8a07bebafbfda0eb67728f4bd15a36201662d1a1
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -174,7 +174,7 @@ F src/callback.c f99a8957ba2adf369645fac0db09ad8adcf1caa2
F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac F src/complete.c dc1d136c0feee03c2f7550bafc0d29075e36deac
F src/ctime.c ea4b7f3623a0fcb1146e7f245d7410033e86859c F src/ctime.c ea4b7f3623a0fcb1146e7f245d7410033e86859c
F src/date.c 593c744b2623971e45affd0bde347631bdfa4625 F src/date.c 593c744b2623971e45affd0bde347631bdfa4625
F src/delete.c 1bcc9d7f2e48cf9043a44bdbd333c38c2ef6676a F src/delete.c af69db684408d06a446e2ba2d050399773f91b9b
F src/expr.c 1a295d8b0a2ba08919ad9300ebf7b67988ff4030 F src/expr.c 1a295d8b0a2ba08919ad9300ebf7b67988ff4030
F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb F src/fault.c 160a0c015b6c2629d3899ed2daf63d75754a32bb
F src/fkey.c 78364daed38e26269c53ddb94c515bceac1063c6 F src/fkey.c 78364daed38e26269c53ddb94c515bceac1063c6
@@ -1140,7 +1140,7 @@ F tool/vdbe-compress.tcl f12c884766bd14277f4fcedcae07078011717381
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01 F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
P e4d220a381388f900a95d1b656a82f14c837f92e P c4734b881a64a9d21d03a14e901785797577fbd8
R d0df7aac2a46f76fbd08b30c4f269d2a R 10d8931262d0ae5f1928488f5d08f78e
U drh U drh
Z 2d947a1a8ff0ceb82e3a6fad03406bbd Z 412c615fb9ef758b4ed11a541f1ecdcc

View File

@@ -1 +1 @@
c4734b881a64a9d21d03a14e901785797577fbd8 dc7be158b82ab9156d0fcdf3394f881eac4d23c3

View File

@@ -433,7 +433,10 @@ void sqlite3DeleteFrom(
*/ */
nKey = nPk; /* OP_Found will use an unpacked key */ nKey = nPk; /* OP_Found will use an unpacked key */
aToOpen = sqlite3DbMallocRaw(db, nIdx+2); 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); memset(aToOpen, 1, nIdx+1);
aToOpen[nIdx+1] = 0; aToOpen[nIdx+1] = 0;
if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iTabCur] = 0; if( aiCurOnePass[0]>=0 ) aToOpen[aiCurOnePass[0]-iTabCur] = 0;