When sqlite3VdbeAddOp() fails due to an OOM fault, return an address of 1

rather than zero so that there appears to always be a prior instruction.
This prevents a negative jump-to address computation in where.c following
an OOM fault. (CVS 6822)

FossilOrigin-Name: fe02339cb2f61c1e8a356e2d0ce9c3aef6e6cd8d
This commit is contained in:
drh 2009-06-26 14:04:51 +00:00
parent 31559aee71
commit c42ed16e5c
3 changed files with 10 additions and 10 deletions

@ -1,5 +1,5 @@
C Fix\sa\stest\sscript\sproblem\sin\sexclusive.test.\s(CVS\s6821)
D 2009-06-26T12:30:40
C When\ssqlite3VdbeAddOp()\sfails\sdue\sto\san\sOOM\sfault,\sreturn\san\saddress\sof\s1\nrather\sthan\szero\sso\sthat\sthere\sappears\sto\salways\sbe\sa\sprior\sinstruction.\nThis\sprevents\sa\snegative\sjump-to\saddress\scomputation\sin\swhere.c\sfollowing\nan\sOOM\sfault.\s(CVS\s6822)
D 2009-06-26T14:04:51
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 8b8fb7823264331210cddf103831816c286ba446
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -207,7 +207,7 @@ F src/vdbe.c e7831536ddb11b14ce29f62a17e0e3860944d570
F src/vdbe.h 35a648bc3279a120da24f34d9a25213ec15daf8a
F src/vdbeInt.h 831c254a6eef237ef4664c8381a0137586567007
F src/vdbeapi.c 0ab8ada7260b32031ca97f338caecf0812460624
F src/vdbeaux.c 569653e18a29904e603542d1e5f8ea6a49ddc2f4
F src/vdbeaux.c 338d4b4323d9153d918d890e72b02f796ba20663
F src/vdbeblob.c c25d7e7bc6d5917feeb17270bd275fa771f26e5c
F src/vdbemem.c 1618f685d19b4bcc96e40b3c478487bafd2ae246
F src/vtab.c 98fbffc5efe68d8107511dec0a650efc7daa9446
@ -737,7 +737,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
P ac1450285025e33fad81e2fb14a06eb85e8ed87a
R 93a1400e20189084799dc0214a9ceb18
U danielk1977
Z 7744482958494d5303ddabc5400940aa
P a52ef5a4216f26c617bd1471cd19f3da2a6d2c4c
R 7c553912f88d2576d87919ca301ee243
U drh
Z 54e939e48b5dd1bf7f258c6a78252ee4

@ -1 +1 @@
a52ef5a4216f26c617bd1471cd19f3da2a6d2c4c
fe02339cb2f61c1e8a356e2d0ce9c3aef6e6cd8d

@ -14,7 +14,7 @@
** to version 2.8.7, all this code was combined into the vdbe.c source file.
** But that file was getting too big so this subroutines were split out.
**
** $Id: vdbeaux.c,v 1.465 2009/06/26 12:15:23 drh Exp $
** $Id: vdbeaux.c,v 1.466 2009/06/26 14:04:51 drh Exp $
*/
#include "sqliteInt.h"
#include "vdbeInt.h"
@ -145,7 +145,7 @@ int sqlite3VdbeAddOp3(Vdbe *p, int op, int p1, int p2, int p3){
assert( op>0 && op<0xff );
if( p->nOpAlloc<=i ){
if( growOpArray(p) ){
return 0;
return 1;
}
}
p->nOp++;