]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix an assert() that may fail if sqlite3_step() is called on a statement after a...
authordan <dan@noemail.net>
Mon, 19 Oct 2009 18:30:34 +0000 (18:30 +0000)
committerdan <dan@noemail.net>
Mon, 19 Oct 2009 18:30:34 +0000 (18:30 +0000)
FossilOrigin-Name: 63bf73452de5a9d03e625e1888444a5355063b74

manifest
manifest.uuid
src/vdbeapi.c
test/schema.test

index 25f242ed0e7d397b7b612e77ee4ced623065c6ae..3e4ded1a8ea707e4a2af498f0c0a3bbb5b784499 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sthe\ssqlite3_reoptimize()\sAPI.\sThe\ssame\sfunctionality\sis\snow\sprovided\sautomatically\sto\squeries\sprepared\susing\sprepare_v2().
-D 2009-10-19T18:11:10
+C Fix\san\sassert()\sthat\smay\sfail\sif\ssqlite3_step()\sis\scalled\son\sa\sstatement\safter\sa\sprevious\scall\shas\salready\sreturned\sSQLITE_SCHEMA.
+D 2009-10-19T18:30:35
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 4ca3f1dd6efa2075bcb27f4dc43eef749877740d
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -209,7 +209,7 @@ F src/vacuum.c f2347520907ee4ec867c9b804d24456b0fd912a7
 F src/vdbe.c f0d6e7dbd4515758c188c9dd7025eb9dfcf021e0
 F src/vdbe.h 3fedb2121d026dd127350d33e875a49cf05df2e8
 F src/vdbeInt.h 8e07f4356dd5bfe03ac5991338e59b68c9b3c717
-F src/vdbeapi.c 1124f16bbb1d8c9682d9aaead78b87826c39b262
+F src/vdbeapi.c 64313d606147f3e44dac0364ca3d2f4e5787f23d
 F src/vdbeaux.c fc032b050e0500000de534b2b0f0c63642459b8f
 F src/vdbeblob.c 9bfaeab22e261a6a7b6df04e7faaf7d6dfdbef5a
 F src/vdbemem.c 7055a2941a7802094f4704cedc7a28cc88a23749
@@ -529,7 +529,7 @@ F test/savepoint3.test e328085853b14898d78ceea00dfe7db18bb6a9ec
 F test/savepoint4.test c8f8159ade6d2acd9128be61e1230f1c1edc6cc0
 F test/savepoint5.test 0735db177e0ebbaedc39812c8d065075d563c4fd
 F test/savepoint6.test 2df1d093e59e78d688c64eb20e0457aaea7d08f9
-F test/schema.test deafe5472099ab5bc65748059dc5182fc8ebad74
+F test/schema.test 3d8b19e3cf1105929940d387e3577da5a58d8fc0
 F test/schema2.test 906408621ea881fdb496d878b1822572a34e32c5
 F test/select1.test f67ca2dfc05df41c7b86eb32ca409b427a5f43b0
 F test/select2.test 9735da20ccd41e42bf2b4c19fd939141b591adae
@@ -760,7 +760,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff x
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f x
-P 6fe6371175482d38ac4aeea994c7b20c18b7de01
-R f87103fb96f6ce262ce840e0ef0a5e44
+P 2c50b3d5aab7cd8cc841d61f8c3b2b34d2f0b54b
+R 0379ed8f298b760fef3fc1740588b12f
 U dan
-Z 5a02708d47ce169d35256d399f3d9643
+Z 51ec9a3921034dcd6f295945d4bf3506
index d6f052d603ac8ac649395f8cbb32cab9df4ade63..417e6c52a612e4902caf7601a30b23a61c2f2302 100644 (file)
@@ -1 +1 @@
-2c50b3d5aab7cd8cc841d61f8c3b2b34d2f0b54b
\ No newline at end of file
+63bf73452de5a9d03e625e1888444a5355063b74
\ No newline at end of file
index 12d7349acb6a44a447122f0bff5148cb2ceadfd7..47696858b6357a06a1705abd85636a221000d066 100644 (file)
@@ -304,7 +304,7 @@ static int sqlite3Step(Vdbe *p){
   }
 
   if( p->pc<=0 && p->expired ){
-    if( ALWAYS(p->rc==SQLITE_OK) ){
+    if( ALWAYS(p->rc==SQLITE_OK || p->rc==SQLITE_SCHEMA) ){
       p->rc = SQLITE_SCHEMA;
     }
     rc = SQLITE_ERROR;
index 66a59583840f06ce640378e58740a84ad002e83e..eeb2102836317b60b5673da92572030d1abfb266 100644 (file)
@@ -364,4 +364,24 @@ do_test schema-12.1 {
   list [sqlite3_step $::STMT] [sqlite3_finalize $::STMT]
 } {SQLITE_ERROR SQLITE_SCHEMA}
 
+do_test schema-13.1 {
+  set S [sqlite3_prepare_v2 db "SELECT * FROM sqlite_master" -1 dummy]
+  db function hello hello
+  db function hello {}
+  db auth auth
+  proc auth {args} {
+    if {[lindex $args 0] == "SQLITE_READ"} {return SQLITE_DENY}
+    return SQLITE_OK
+  }
+  sqlite3_step $S
+} {SQLITE_SCHEMA}
+
+do_test schema-13.2 {
+  sqlite3_step $S
+} {SQLITE_SCHEMA}
+
+do_test schema-13.3 {
+  sqlite3_finalize $S
+} {SQLITE_SCHEMA}
+
 finish_test