]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Have sqlite3_blob_bytes() return 0 following a failed call to sqlite3_reopen_blob().
authordan <dan@noemail.net>
Mon, 6 Dec 2010 17:11:05 +0000 (17:11 +0000)
committerdan <dan@noemail.net>
Mon, 6 Dec 2010 17:11:05 +0000 (17:11 +0000)
FossilOrigin-Name: 476a8b492124d31e0656e61a6183ab55684c0bdf

manifest
manifest.uuid
src/sqlite.h.in
src/vdbeblob.c
test/incrblob3.test

index 00ab12a12c2b12acbac5d0f49e57fa716a6bb4e0..0023d3d64149e75be297c0106f02e7c0e6eea520 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,8 +1,5 @@
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-C Version\s3.7.4\srelease\scandidate\s2.
-D 2010-12-04T19:35:04
+C Have\ssqlite3_blob_bytes()\sreturn\s0\sfollowing\sa\sfailed\scall\sto\ssqlite3_reopen_blob().
+D 2010-12-06T17:11:06
 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
 F Makefile.in 4547616ad2286053af6ccccefa242dc925e49bf0
 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -179,7 +176,7 @@ F src/resolve.c 1c0f32b64f8e3f555fe1f732f9d6f501a7f05706
 F src/rowset.c 69afa95a97c524ba6faf3805e717b5b7ae85a697
 F src/select.c 8a7ba246b0b4bb45df7fbc52681728a0e3deaaa7
 F src/shell.c 8517fc1f9c59ae4007e6cc8b9af91ab231ea2056
-F src/sqlite.h.in e6e87d10e6a3756b8c7e9a11703716b6a1575a40
+F src/sqlite.h.in b7e8a4e4749cfae9c99e1fbe3f9f87763cbbf7a2
 F src/sqlite3ext.h c90bd5507099f62043832d73f6425d8d5c5da754
 F src/sqliteInt.h 5cfee93885789f174df186409b81812ee189e44f
 F src/sqliteLimit.h a17dcd3fb775d63b64a43a55c54cb282f9726f44
@@ -236,7 +233,7 @@ F src/vdbe.h 4de0efb4b0fdaaa900cf419b35c458933ef1c6d2
 F src/vdbeInt.h 1f2137b905969f4de0648256aeb73abdf88f9213
 F src/vdbeapi.c fb0036185b3c56e15916a5ee96309cd4acf6818f
 F src/vdbeaux.c b810a66902ee40c71cdb9c64f43760da516c91df
-F src/vdbeblob.c e0ce3c54cc0c183af2ec67b63a289acf92251df4
+F src/vdbeblob.c 18955f0ee6b133cd08e1592010cb9a6b11e9984c
 F src/vdbemem.c 411649a35686f54268ccabeda175322c4697f5a6
 F src/vdbetrace.c 864cef96919323482ebd9986f2132435115e9cc2
 F src/vtab.c b297e8fa656ab5e66244ab15680d68db0adbec30
@@ -475,7 +472,7 @@ F test/in3.test 3cbf58c87f4052cee3a58b37b6389777505aa0c0
 F test/in4.test 64f3cc1acde1b9161ccdd8e5bde3daefdb5b2617
 F test/incrblob.test 76e787ca3301d9bfa6906031c626d26f8dd707de
 F test/incrblob2.test edc3a96e557bd61fb39acc8d2edd43371fbbaa19
-F test/incrblob3.test 3fed76bd79df7049ec696de96632c1ede699ea27
+F test/incrblob3.test aedbb35ea1b6450c33b98f2b6ed98e5020be8dc7
 F test/incrblob_err.test c577c91d4ed9e8336cdb188b15d6ee2a6fe9604e
 F test/incrblobfault.test 917c0292224c64a56ef7215fd633a3a82f805be0
 F test/incrvacuum.test 453d1e490d8f5ad2c9b3a54282a0690d6ae56462
@@ -896,14 +893,7 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
 F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
-P 507027b70f71689f77dee3e849ebc66a1c4c3166
-R 269151d064cbf251d3b04ce94d96a176
-U drh
-Z 44acfd13da8d338249a74453416724fe
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-
-iD8DBQFM+pfroxKgR168RlERAh2OAJ4gpQpjJ0XbSVxG7vvPK96lMgRkDgCfTiYU
-Vw03RsdoJ+YpZFKTZVXMr3I=
-=HitG
------END PGP SIGNATURE-----
+P 40756fe1f109da8bccac0ca28f05435792c62f81
+R 9dde255cce61a1834cdbed408450c15b
+U dan
+Z 640d6067fd568f45a0bb580334c25ddc
index 20be0ec6c2ddbeb9c0a8a5dcb18e98b1b5562a76..8b6746b353b8c47c10741b622b9613ba604116d2 100644 (file)
@@ -1 +1 @@
-40756fe1f109da8bccac0ca28f05435792c62f81
\ No newline at end of file
+476a8b492124d31e0656e61a6183ab55684c0bdf
\ No newline at end of file
index 5b67b7abd4f9ad98908d1bb6e2ba849ac7e023a3..240a3bab22817381924365419dd484b694662a0a 100644 (file)
@@ -4835,7 +4835,8 @@ int sqlite3_blob_open(
 ** SQLite error code is returned and the blob handle is considered aborted.
 ** ^All subsequent calls to [sqlite3_blob_read()], [sqlite3_blob_write()] or
 ** [sqlite3_blob_reopen()] on an aborted blob handle immediately return
-** SQLITE_ABORT.
+** SQLITE_ABORT. ^Calling [sqlite3_blob_bytes()] on an aborted blob handle
+** always returns zero.
 **
 ** ^This function sets the database handle error code and message.
 */
index f43fc64995b12a54125d1612868fe1d6cfedc5eb..f26cc87ea84f0ca958a77af0e044ab32d2d67dcb 100644 (file)
@@ -419,7 +419,7 @@ int sqlite3_blob_write(sqlite3_blob *pBlob, const void *z, int n, int iOffset){
 */
 int sqlite3_blob_bytes(sqlite3_blob *pBlob){
   Incrblob *p = (Incrblob *)pBlob;
-  return p ? p->nByte : 0;
+  return (p && p->pStmt) ? p->nByte : 0;
 }
 
 /*
@@ -457,6 +457,7 @@ int sqlite3_blob_reopen(sqlite3_blob *pBlob, sqlite3_int64 iRow){
   }
 
   rc = sqlite3ApiExit(db, rc);
+  assert( rc==SQLITE_OK || p->pStmt==0 );
   sqlite3_mutex_leave(db->mutex);
   return rc;
 }
index c2a97521dc73f15aeb9414947856c009dd38c602..4c49f1563c18dff4ec0919bdfa86f1732d8ba14d 100644 (file)
@@ -92,8 +92,11 @@ foreach {tn rowid type} {
   do_test incrblob3-2.2.$tn.5 {
     list [catch {sqlite3_blob_write $::blob 0 "abcd"} msg] $msg
   } {1 SQLITE_ABORT}
+  do_test incrblob3-2.2.$tn.6 {
+    sqlite3_blob_bytes $::blob
+  } {0}
 
-  do_test incrblob3-2.2.$tn.4 { close $::blob } {}
+  do_test incrblob3-2.2.$tn.7 { close $::blob } {}
 }
 
 # Test that passing NULL to sqlite3_blob_XXX() APIs returns SQLITE_MISUSE.