]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the result of sqlite3VdbeGetOp() is not used as an array following
authordrh <drh@noemail.net>
Sat, 6 Jun 2009 15:17:27 +0000 (15:17 +0000)
committerdrh <drh@noemail.net>
Sat, 6 Jun 2009 15:17:27 +0000 (15:17 +0000)
an OOM error, since after (6691) it might be a single-entry dummy opcode. (CVS 6724)

FossilOrigin-Name: 127b13981960a9690de09e8f9d0b38a4bd76015f

manifest
manifest.uuid
src/where.c

index 7668a3f8441fa967a458dca405b33754a31ba7b5..6ec0e1d49af0ef385757193d1eba0f2eed4a9ce3 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C When\sbuilding\sin\sdebug\smode\swith\sgcc,\sforce\sthe\snullMem\svariable\sin\sfunction\scolumnMem()\sto\sbe\saligned\sto\san\s8-byte\sboundary.\sOtherwise\san\sassert()\sstatement\smay\sfail.\s(CVS\s6723)
-D 2009-06-06T14:13:27
+C Make\ssure\sthe\sresult\sof\ssqlite3VdbeGetOp()\sis\snot\sused\sas\san\sarray\sfollowing\nan\sOOM\serror,\ssince\safter\s(6691)\sit\smight\sbe\sa\ssingle-entry\sdummy\sopcode.\s(CVS\s6724)
+D 2009-06-06T15:17:28
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 8b8fb7823264331210cddf103831816c286ba446
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -212,7 +212,7 @@ F src/vdbeblob.c c25d7e7bc6d5917feeb17270bd275fa771f26e5c
 F src/vdbemem.c 05183d46094aa99b8f8350e5761b9369dbef35a8
 F src/vtab.c e2f4c92df7d06330b151448718c4724742ff444b
 F src/walker.c ec4b9742a4077ef80346e2f9aaf0f44c2d95087a
-F src/where.c 706e9f2fbb422f58bf6c6542b62eed2055794942
+F src/where.c c6dda6e349e83de5da471704841791ecacaf87ca
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
 F test/all.test 14165b3e32715b700b5f0cbf8f6e3833dda0be45
@@ -733,7 +733,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
-P 3ae4880bee3a0312c61cdd36f4fa50286cc2ef48
-R 7fafa9b9c2ade168b25ec9e70190e435
-U danielk1977
-Z 310a5ca4b45740577b9f82dfb2f7878d
+P 3fd6c72da599347af70897b30b86a4ba641d4cd9
+R cb43d9b720bcd9297992edbfe1e179da
+U drh
+Z c27bf9ffa6ccdcf0d37dcb5ecf60c7c6
index d11b5cb4217452d16ef4790b7c48d3eb5144e7a3..0ea3f8bc5e2533e58e032622a4b188af03b1cc47 100644 (file)
@@ -1 +1 @@
-3fd6c72da599347af70897b30b86a4ba641d4cd9
\ No newline at end of file
+127b13981960a9690de09e8f9d0b38a4bd76015f
\ No newline at end of file
index d0f0b01d6c26378e580ec511ad4b8768ac5423e2..0fe0df06e4f0bbf87552175b267f12b4f4686c6d 100644 (file)
@@ -16,7 +16,7 @@
 ** so is applicable.  Because this module is responsible for selecting
 ** indices, you might also think of this module as the "query optimizer".
 **
-** $Id: where.c,v 1.400 2009/06/03 01:24:54 drh Exp $
+** $Id: where.c,v 1.401 2009/06/06 15:17:28 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -3551,7 +3551,7 @@ void sqlite3WhereEnd(WhereInfo *pWInfo){
     ** that reference the table and converts them into opcodes that
     ** reference the index.
     */
-    if( (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 ){
+    if( (pLevel->plan.wsFlags & WHERE_INDEXED)!=0 && !db->mallocFailed){
       int k, j, last;
       VdbeOp *pOp;
       Index *pIdx = pLevel->plan.u.pIdx;