]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Do a better job of capturing all system errno values regardless of when
authordrh <drh@noemail.net>
Mon, 21 Mar 2016 11:38:01 +0000 (11:38 +0000)
committerdrh <drh@noemail.net>
Mon, 21 Mar 2016 11:38:01 +0000 (11:38 +0000)
they occur.

FossilOrigin-Name: 7d49998d571d841a6d1b55f5f9889e613daaab2a

manifest
manifest.uuid
src/main.c
src/util.c

index 23d5324bc804e766b48ec56a0eacc49f8ea3cde0..535a69183e02843b6e64fd192cf786ab37292e87 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Merge\supdates\sfrom\strunk.
-D 2016-03-21T10:49:49.647
+C Do\sa\sbetter\sjob\sof\scapturing\sall\ssystem\serrno\svalues\sregardless\sof\swhen\nthey\soccur.
+D 2016-03-21T11:38:01.899
 F Makefile.in f53429fb2f313c099283659d0df6f20f932c861f
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc df0bf9ff7f8b3f4dd9fb4cc43f92fe58f6ec5c66
@@ -316,7 +316,7 @@ F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
 F src/insert.c 723d5d708cdb61bdd47c00b9f07c75be45aefc09
 F src/legacy.c 75d3023be8f0d2b99d60f905090341a03358c58e
 F src/loadext.c e70f8f9e97624a232870ea5486e682c813ac3002
-F src/main.c 74591e0405e5e71b276105ac5f8d419dd54e6495
+F src/main.c f6c6e61bfd4cc9306a737d0c5c3f1e0eaf6086e0
 F src/malloc.c 1443d1ad95d67c21d77af7ae3f44678252f0efec
 F src/mem0.c 6a55ebe57c46ca1a7d98da93aaa07f99f1059645
 F src/mem1.c 6919bcf12f221868ea066eec27e579fed95ce98b
@@ -415,7 +415,7 @@ F src/treeview.c e4b41a37530a191579d3c53142cc44ee2eb99373
 F src/trigger.c e14840ee0c3e549e758ec9bf3e4146e166002280
 F src/update.c 56b3db7edff0110360a12b76af97c39ebe3ea8b8
 F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
-F src/util.c c3fc5193e6f039fa61afbcc0db87d5a5d563a18a
+F src/util.c 161266913716ec2b35cf477239d3bdf1e2038305
 F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
 F src/vdbe.c 3b542ffd5b6aaab55255ec3801fc86dcbfaea543
 F src/vdbe.h 6f44193e7be52fd5f7c308175a936555b1e6b101
@@ -1457,7 +1457,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P 1602f6b53698bd3a1a4be218c2e3145dd895f1f1 d6e2637df16764aa9723a30ea2eb8a631d28cb2b
-R 612a3877b08babb8ce38fd27cb203dde
+P 86ab8643969bd2e51a257d80da9316c668437f7b
+R 79a2efa83ad9e99707ee54a3ce3858c7
 U drh
-Z a4bea0f6db7341ce1f534f224a30953a
+Z deb9ef153d45658bc99716f0bcf98cb3
index a54112ab693a026848805b832574f319c2be86ec..9ddd083acd1dc1a60483f4c7cacbb3ba074139d1 100644 (file)
@@ -1 +1 @@
-86ab8643969bd2e51a257d80da9316c668437f7b
\ No newline at end of file
+7d49998d571d841a6d1b55f5f9889e613daaab2a
\ No newline at end of file
index e4d5cb494c73299dc0aceeaef163dfc35f16f717..2e5ba083938fc8fda32d72fd1cef32ff64bd3392 100644 (file)
@@ -2868,7 +2868,6 @@ static int openDatabase(
     if( rc==SQLITE_IOERR_NOMEM ){
       rc = SQLITE_NOMEM_BKPT;
     }
-    sqlite3SystemError(db, rc);
     sqlite3Error(db, rc);
     goto opendb_out;
   }
index 0a705a6a6eba4e21b06d9713b0c2958a89d233b0..b231342916571ed38a86dad8f11aa93b56671d97 100644 (file)
@@ -120,10 +120,14 @@ const char *sqlite3StrNext(const char *z){
 /*
 ** Set the current error code to err_code and clear any prior error message.
 */
+static SQLITE_NOINLINE void  sqlite3ErrorFinish(sqlite3 *db, int err_code){
+  if( db->pErr ) sqlite3ValueSetNull(db->pErr);
+  sqlite3SystemError(db, err_code);
+}
 void sqlite3Error(sqlite3 *db, int err_code){
   assert( db!=0 );
   db->errCode = err_code;
-  if( db->pErr ) sqlite3ValueSetNull(db->pErr);
+  if( err_code || db->pErr ) sqlite3ErrorFinish(db, err_code);
 }
 
 /*
@@ -162,6 +166,7 @@ void sqlite3SystemError(sqlite3 *db, int rc){
 void sqlite3ErrorWithMsg(sqlite3 *db, int err_code, const char *zFormat, ...){
   assert( db!=0 );
   db->errCode = err_code;
+  sqlite3SystemError(db, err_code);
   if( zFormat==0 ){
     sqlite3Error(db, err_code);
   }else if( db->pErr || (db->pErr = sqlite3ValueNew(db))!=0 ){