]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Try to find some more stack leaks by adding OP_StackDepth to loops in DML statements...
authordanielk1977 <danielk1977@noemail.net>
Wed, 12 Dec 2007 17:42:53 +0000 (17:42 +0000)
committerdanielk1977 <danielk1977@noemail.net>
Wed, 12 Dec 2007 17:42:53 +0000 (17:42 +0000)
FossilOrigin-Name: 12c3029b1edcff4435177c709fb2584323f8c515

manifest
manifest.uuid
src/delete.c
src/insert.c
src/where.c

index b6100b30507ee1aa1fd72e8db83400d7c31edcb8..8d3eb870a887b51a04b235acbdb10e4cb0564d20 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Remove\sa\scouple\sof\slines\sin\sdelete.c\sthat\sweren't\sdoing\sanything.\s(CVS\s4616)
-D 2007-12-12T17:19:27
+C Try\sto\sfind\ssome\smore\sstack\sleaks\sby\sadding\sOP_StackDepth\sto\sloops\sin\sDML\sstatements.\sNone\swere\sfound.\s(CVS\s4617)
+D 2007-12-12T17:42:53
 F Makefile.arm-wince-mingw32ce-gcc ac5f7b2cef0cd850d6f755ba6ee4ab961b1fadf7
 F Makefile.in 0590398f62fc2c456ff4c45e9741f5a718b7e2ac
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -90,13 +90,13 @@ F src/build.c 580561a0d9e070ff2741f3b115cae51c1ef08260
 F src/callback.c 77b302b0d41468dcda78c70e706e5b84577f0fa0
 F src/complete.c 4cf68fd75d60257524cbe74f87351b9848399131
 F src/date.c 49c5a6d2de6c12000905b4d36868b07d3011bbf6
-F src/delete.c 8c696d287ab2d17e0a38f3cad154f48d3b92fffb
+F src/delete.c 1f957c4acb2270772c6fab8411459e7dd43d585f
 F src/experimental.c 1b2d1a6cd62ecc39610e97670332ca073c50792b
 F src/expr.c 7c8e3295ddeb835ed081b8573caaf8c3fd7c9f9c
 F src/func.c 9c87ddf907e72ac1990146ff2d68dce21d68b419
 F src/hash.c 45a7005aac044b6c86bd7e49c44bc15d30006d6c
 F src/hash.h 031cd9f915aff27e12262cb9eb570ac1b8326b53
-F src/insert.c a090c7258f2be707cca8f0cf376142f141621241
+F src/insert.c c7e1867a6a162c074d47786f1f0152b9583e8c01
 F src/journal.c 807bed7a158979ac8d63953e1774e8d85bff65e2
 F src/legacy.c 4ac53191fad2e3c4d59bde1228879b2dc5a96d66
 F src/limits.h 71ab25f17e35e0a9f3f6f234b8ed49cc56731d35
@@ -177,7 +177,7 @@ F src/vdbeblob.c 82f51cdf9b0c0af729732fde48c824e498c0a1ca
 F src/vdbefifo.c 334c838c8f42d61a94813d136019ee566b5dc2f6
 F src/vdbemem.c 123994fcd344993d2fb050a83b91b341bbbd08b4
 F src/vtab.c f819d55ef638d45e09ce00009d435da8bf16f528
-F src/where.c 7ec7c7a5b3a534d5ccbe9d73690b8969ee6b3f08
+F src/where.c 4d71db7ee641cd28cdef88cc6149bd3a51d2e671
 F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617
 F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
 F test/all.test ee350b9ab15b175fc0a8fb51bf2141ed3a3b9cba
@@ -599,7 +599,7 @@ F www/tclsqlite.tcl 8be95ee6dba05eabcd27a9d91331c803f2ce2130
 F www/vdbe.tcl 87a31ace769f20d3627a64fa1fade7fed47b90d0
 F www/version3.tcl 890248cf7b70e60c383b0e84d77d5132b3ead42b
 F www/whentouse.tcl fc46eae081251c3c181bd79c5faef8195d7991a5
-P ee98ae17187296f7b0181c3d4d2b942d5cd4bc8f
-R f07fe36c79aef9b4c5a7e4c619f02545
+P 86332c79aedb64842e589ff941c637f8e1aabd41
+R 4c469db28dc3fd8fcf2ee0668196ead3
 U danielk1977
-Z 3c54ca661ceb916252bfa90a4eafc09b
+Z 306c9b4906ad93fa32fe70f6606c1c62
index 043051c5304a17d6c3cfd0c3c1d9fdc420377b9d..840b01720eef6b37a338b5454e483b92f84cd9a2 100644 (file)
@@ -1 +1 @@
-86332c79aedb64842e589ff941c637f8e1aabd41
\ No newline at end of file
+12c3029b1edcff4435177c709fb2584323f8c515
\ No newline at end of file
index f8e30e8acb2200d66fc2ca99b73a5ffe8c6aee29..10c6cffa4496c7c32baf4ec5a4970c85d5a158e5 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains C code routines that are called by the parser
 ** in order to generate code for DELETE FROM statements.
 **
-** $Id: delete.c,v 1.133 2007/12/12 17:19:27 danielk1977 Exp $
+** $Id: delete.c,v 1.134 2007/12/12 17:42:53 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -277,6 +277,7 @@ void sqlite3DeleteFrom(
     if( triggers_exist ){
       int mem1 = pParse->nMem++;
       addr = sqlite3VdbeAddOp(v, OP_FifoRead, 0, end);
+      sqlite3VdbeAddOp(v, OP_StackDepth, -1, 0);
       sqlite3VdbeAddOp(v, OP_MemStore, mem1, 0);
       if( !isView ){
         sqlite3OpenTable(pParse, iCur, iDb, pTab, OP_OpenRead);
@@ -310,6 +311,7 @@ void sqlite3DeleteFrom(
       ** row triggers */
       if( !triggers_exist ){ 
         addr = sqlite3VdbeAddOp(v, OP_FifoRead, 0, end);
+        sqlite3VdbeAddOp(v, OP_StackDepth, -1, 0);
       }
 
       /* Delete the row */
index 85e4f34955ff9799b8dca15e43fa16d80da6e01e..3334c3661612f8758deab3a70735e3e61452877e 100644 (file)
@@ -12,7 +12,7 @@
 ** This file contains C code routines that are called by the parser
 ** to handle INSERT statements in SQLite.
 **
-** $Id: insert.c,v 1.194 2007/11/27 14:46:42 drh Exp $
+** $Id: insert.c,v 1.195 2007/12/12 17:42:53 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -509,6 +509,7 @@ void sqlite3Insert(
       */
       srcTab = pParse->nTab++;
       sqlite3VdbeResolveLabel(v, iInsertBlock);
+      sqlite3VdbeAddOp(v, OP_StackDepth, -1, 0);
       sqlite3VdbeAddOp(v, OP_MakeRecord, nColumn, 0);
       sqlite3VdbeAddOp(v, OP_NewRowid, srcTab, 0);
       sqlite3VdbeAddOp(v, OP_Pull, 1, 0);
@@ -641,6 +642,7 @@ void sqlite3Insert(
   }else if( pSelect ){
     sqlite3VdbeAddOp(v, OP_Goto, 0, iSelectLoop);
     sqlite3VdbeResolveLabel(v, iInsertBlock);
+    sqlite3VdbeAddOp(v, OP_StackDepth, -1, 0);
   }
 
   /* Run the BEFORE and INSTEAD OF triggers, if there are any
index 2e39b0313745a08f4e8a20331a149e655f0f022b..424df979b1229d60a7b9094f344cb8c749583359 100644 (file)
@@ -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.265 2007/11/29 17:43:28 danielk1977 Exp $
+** $Id: where.c,v 1.266 2007/12/12 17:42:53 danielk1977 Exp $
 */
 #include "sqliteInt.h"
 
@@ -2582,6 +2582,7 @@ WhereInfo *sqlite3WhereBegin(
       pLevel->p2 = 1 + sqlite3VdbeAddOp(v, OP_Rewind, iCur, brk);
     }
     notReady &= ~getMask(&maskSet, iCur);
+    sqlite3VdbeAddOp(v, OP_StackDepth, -1, 0);
 
     /* Insert code to test every subexpression that can be completely
     ** computed using the current set of tables.