From: danielk1977 Date: Wed, 12 Dec 2007 17:42:53 +0000 (+0000) Subject: Try to find some more stack leaks by adding OP_StackDepth to loops in DML statements... X-Git-Tag: version-3.6.10~1560 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=997a90401659a561e237e8393899d1785d3a95f9;p=thirdparty%2Fsqlite.git Try to find some more stack leaks by adding OP_StackDepth to loops in DML statements. None were found. (CVS 4617) FossilOrigin-Name: 12c3029b1edcff4435177c709fb2584323f8c515 --- diff --git a/manifest b/manifest index b6100b3050..8d3eb870a8 100644 --- 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 diff --git a/manifest.uuid b/manifest.uuid index 043051c530..840b01720e 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -86332c79aedb64842e589ff941c637f8e1aabd41 \ No newline at end of file +12c3029b1edcff4435177c709fb2584323f8c515 \ No newline at end of file diff --git a/src/delete.c b/src/delete.c index f8e30e8acb..10c6cffa44 100644 --- a/src/delete.c +++ b/src/delete.c @@ -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 */ diff --git a/src/insert.c b/src/insert.c index 85e4f34955..3334c36616 100644 --- a/src/insert.c +++ b/src/insert.c @@ -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 diff --git a/src/where.c b/src/where.c index 2e39b03137..424df979b1 100644 --- a/src/where.c +++ b/src/where.c @@ -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.