]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Fix a segfault introduced by (5720) that can follow an IO error. (CVS 5721)
authordanielk1977 <danielk1977@noemail.net>
Thu, 18 Sep 2008 18:17:03 +0000 (18:17 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Thu, 18 Sep 2008 18:17:03 +0000 (18:17 +0000)
FossilOrigin-Name: 05d3462688507b61710cbda27adf61d0b0514e27

manifest
manifest.uuid
src/btree.c

index 489cd9314561c3d61a2dd222c27da32ac982342c..8048928838d2718488b7bee170ab3e6cf87e9364 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Avoid\sparsing\sthe\sstructure\sof\sb-tree\spages\s(in\ssqlite3BtreeInitPage)\smore\sthan\sis\snecessary.\s(CVS\s5720)
-D 2008-09-18T17:34:44
+C Fix\sa\ssegfault\sintroduced\sby\s(5720)\sthat\scan\sfollow\san\sIO\serror.\s(CVS\s5721)
+D 2008-09-18T18:17:04
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in d15a7ebfe5e057a72a49805ffb302dbb601c8329
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -99,7 +99,7 @@ F src/attach.c db3f4a60538733c1e4dcb9d0217a6e0d6ccd615b
 F src/auth.c c8b2ab5c8bad4bd90ed7c294694f48269162c627
 F src/bitvec.c 95c86bd18d8fedf0533f5af196192546e10a7e7d
 F src/btmutex.c 709cad2cdca0afd013f0f612363810e53f59ec53
-F src/btree.c e8484887722a3a84f2aab5663a0dc93e0c7806c7
+F src/btree.c 54fc8950e4c292ff92bb431449a27772862feae9
 F src/btree.h 6371c5e599fab391a150c96afbc10062b276d107
 F src/btreeInt.h e36f77e6621d671beb19ae581af1eba116cdfdc4
 F src/build.c 160c71acca8f643f436ed6c1ee2f684c88df4dfe
@@ -637,7 +637,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P 419764b35c96a1b08aefc0d6093c19fdf2aef517
-R abfec31e169b70fffcf581f021d6269e
+P 6b998f3066754e219c266501327e5578c9406b63
+R c8b7419989d3fc635cd976f45445d491
 U danielk1977
-Z fbad4f393b6c492a76554e62ab4e7b3d
+Z 09361d7adedb580453134b34f7561772
index e1b3a273d6f7c1730fa7f6dc95ebf3641145dee2..dce84acc70ba8e1833f5338b1d0c611892a8e9f0 100644 (file)
@@ -1 +1 @@
-6b998f3066754e219c266501327e5578c9406b63
\ No newline at end of file
+05d3462688507b61710cbda27adf61d0b0514e27
\ No newline at end of file
index efb509d96946c00908ed9c5f0df399cd3798b64c..b7f738ab59292882ee94e85be84e1fee7d777fc2 100644 (file)
@@ -9,7 +9,7 @@
 **    May you share freely, never taking more than you give.
 **
 *************************************************************************
-** $Id: btree.c,v 1.513 2008/09/18 17:34:44 danielk1977 Exp $
+** $Id: btree.c,v 1.514 2008/09/18 18:17:04 danielk1977 Exp $
 **
 ** This file implements a external (disk-based) database using BTrees.
 ** See the header comment on "btreeInt.h" for additional information.
@@ -4953,6 +4953,9 @@ static int balance_quick(MemPage *pPage, MemPage *pParent){
         rc = ptrmapPutOvfl(pNew, 0);
       }
     }
+
+    /* Release the reference to the new page. */
+    releasePage(pNew);
   }
 
   /* At this point the pPage->nFree variable is not set correctly with
@@ -4972,10 +4975,9 @@ static int balance_quick(MemPage *pPage, MemPage *pParent){
   sqlite3BtreeInitPage(pPage, pPage->pParent);
   sqlite3PagerUnref(pPage->pParent->pDbPage);
 
-  /* Release the reference to the new page and balance the parent page,
-  ** in case the divider cell inserted caused it to become overfull.
+  /* If everything else succeeded, balance the parent page, in 
+  ** case the divider cell inserted caused it to become overfull.
   */
-  releasePage(pNew);
   if( rc==SQLITE_OK ){
     rc = balance(pParent, 0);
   }