diff options
-rw-r--r-- | manifest | 14 | ||||
-rw-r--r-- | manifest.uuid | 2 | ||||
-rw-r--r-- | src/test8.c | 4 | ||||
-rw-r--r-- | src/where.c | 9 |
4 files changed, 17 insertions, 12 deletions
@@ -1,5 +1,5 @@ -C Add\sa\sversion\sof\scellSizePtr()\sthat\sis\sfaster\sthan\susing\ssqlite3BtreeParseCellPtr().\sThis\sspeeds\sup\sbalance_nonroot().\s(CVS\s6566) -D 2009-04-29T11:31:47 +C Fix\sa\scase\sin\swhere.c\swhere\sa\scrash\scan\sfollow\sa\smalloc\sfailure.\sAlso\smodify\stest\scode\sin\stest8.c\sto\scheck\sa\sreturn\scode\sthat\swas\sbeing\sdropped\s(causing\sa\stest\sin\svtab_err.test\sto\sfail).\s(CVS\s6567) +D 2009-04-29T11:50:54 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 583e87706abc3026960ed759aff6371faf84c211 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -174,7 +174,7 @@ F src/test4.c f79ab52d27ff49b784b631a42e2ccd52cfd5c84c F src/test5.c 162a1cea2105a2c460a3f39fa6919617b562a288 F src/test6.c 1a0a7a1f179469044b065b4a88aab9faee114101 F src/test7.c b94e68c2236de76889d82b8d7d8e00ad6a4d80b1 -F src/test8.c b1061548f7ce3aeedea3cc4d649ee1487c2b4eaf +F src/test8.c 34719910286a0a6ca233f10ba66558be938494dd F src/test9.c 963d380922f25c1c323712d05db01b19197ee6f7 F src/test_async.c 731d23f953ece5bf40ce87810cfb7607218953c5 F src/test_autoext.c f53b0cdf7bf5f08100009572a5d65cdb540bd0ad @@ -212,7 +212,7 @@ F src/vdbeblob.c e67757450ae8581a8b354d9d7e467e41502dfe38 F src/vdbemem.c 111d8193859d16aefd5d3cb57472808584ea5503 F src/vtab.c 53355aa2381ec3ef2eaad25672cfd5877a02fe45 F src/walker.c 7cdf63223c953d4343c6833e940f110281a378ee -F src/where.c d20e083e5cc549a04f1647ee180d3bc3d2c73c02 +F src/where.c de8984ae4c5283f55ec2081bbbdba0375b9e3aa9 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2 F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87 F test/all.test 14165b3e32715b700b5f0cbf8f6e3833dda0be45 @@ -725,7 +725,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P fc3a5ac2353142082fe14d47f9c2b662407ea3f7 -R 7f4b713c43e75500014d39ff57631373 +P e8f7f7b787fe941093edaea44db4d361fad1e002 +R 4de805b014550f062517076b8e0aa32b U danielk1977 -Z 7a846e8596d6c8f108ba0f337c171b19 +Z cc423cf5b9f2744841b886533297cfcf diff --git a/manifest.uuid b/manifest.uuid index 6d5b72f7a..9c57c32ab 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -e8f7f7b787fe941093edaea44db4d361fad1e002
\ No newline at end of file +9664e2b6c69271a7ca55af7812a186773a7c6592
\ No newline at end of file diff --git a/src/test8.c b/src/test8.c index fa26677fe..a313c2601 100644 --- a/src/test8.c +++ b/src/test8.c @@ -13,7 +13,7 @@ ** is not included in the SQLite library. It is used for automated ** testing of the SQLite library. ** -** $Id: test8.c,v 1.77 2009/04/21 09:02:47 danielk1977 Exp $ +** $Id: test8.c,v 1.78 2009/04/29 11:50:54 danielk1977 Exp $ */ #include "sqliteInt.h" #include "tcl.h" @@ -695,7 +695,7 @@ static int echoFilter( rc = sqlite3_prepare(db, idxStr, -1, &pCur->pStmt, 0); assert( pCur->pStmt || rc!=SQLITE_OK ); for(i=0; rc==SQLITE_OK && i<argc; i++){ - sqlite3_bind_value(pCur->pStmt, i+1, argv[i]); + rc = sqlite3_bind_value(pCur->pStmt, i+1, argv[i]); } /* If everything was successful, advance to the first row of the scan */ diff --git a/src/where.c b/src/where.c index f02689b3e..3f850d6d2 100644 --- a/src/where.c +++ b/src/where.c @@ -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.390 2009/04/24 15:46:22 drh Exp $ +** $Id: where.c,v 1.391 2009/04/29 11:50:54 danielk1977 Exp $ */ #include "sqliteInt.h" @@ -1747,6 +1747,12 @@ static void bestVirtualIndex( int i, j; int nOrderBy; + /* Make sure wsFlags is initialized to some sane value. Otherwise, if the + ** malloc in allocateIndexInfo() fails and this function returns leaving + ** wsFlags in an uninitialized state, the caller may behave unpredictably. + */ + pCost->plan.wsFlags = WHERE_VIRTUALTABLE; + /* If the sqlite3_index_info structure has not been previously ** allocated and initialized, then allocate and initialize it now. */ @@ -1830,7 +1836,6 @@ static void bestVirtualIndex( }else{ pCost->rCost = pIdxInfo->estimatedCost; } - pCost->plan.wsFlags = WHERE_VIRTUALTABLE; pCost->plan.u.pVtabIdx = pIdxInfo; if( pIdxInfo && pIdxInfo->orderByConsumed ){ pCost->plan.wsFlags |= WHERE_ORDERBY; |