- C Fix\sanother\stest\sproblem\sand\ssome\sinstances\swhere\san\sOOM\smay\scause\sa\ssegfault.
- D 2009-08-31T05:23:33
------BEGIN PGP SIGNED MESSAGE-----
-Hash: SHA1
-
-C Add\sa\snew\ssource\scode\slogo\sgif.
-D 2009-08-28T00:49:03
++C Merge\swith\smain\sbranch.
++D 2009-08-31T05:39:59
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 73ddeec9dd10b85876c5c2ce1fdce627e1dcc7f8
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
F src/backup.c 6f1c2d9862c8a3feb7739dfcca02c1f5352e37f3
F src/bitvec.c e08f6c1a9551b88081fc737916c6c3fd5029a6cf
F src/btmutex.c 0f43a75bb5b8147b386e8e1c3e71ba734e3863b7
- F src/btree.c 49212ddaee8d7d12b4f1e17b9de62f7ea91ca59d
+ F src/btree.c 6b60ece56141bbe23aa6efca10f1612d34271c2f
F src/btree.h 577448a890c2ab9b21e6ab74f073526184bceebe
F src/btreeInt.h 1c86297e69380f6577e7ae67452597dd8d5c2705
-F src/build.c a43c959c5953c25989207c929f99ef808d5336a6
+F src/build.c 212476dc971756e7f7429e677059fafc678afbd5
F src/callback.c 9bc0ae998f15207d3115224979331c0aafc9bcc3
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
F src/date.c ab5f7137656652a48434d64f96bdcdc823bb23b3
F src/pcache.c c92ffd4f3e1279b3766854c6d18b5bf4aac0d1fa
F src/pcache.h 435ef324197f79391f9c92b71d7f92b548ad7a36
F src/pcache1.c 211295a9ff6a5b30f1ca50516731a5cf3e9bf82c
-F src/pragma.c 9eb44ac1d3dc1ac3ea4f444abe1a10ae8acaa16c
-F src/prepare.c 0b966d20979237121ec5fec449c9db45f6b9789a
+F src/pragma.c 6b1fa9f180d88b3f905cebd593ef6aef9334be43
+F src/prepare.c 49739b385c4cd0667cfa9941c41bf6d4f8edc157
F src/printf.c 508a1c59433353552b6553cba175eaa7331f8fc1
F src/random.c 676b9d7ac820fe81e6fb2394ac8c10cff7f38628
-F src/resolve.c 4a61d03e49b15440878096e6030863fc628828f0
+F src/resolve.c 92ef8a85d53b305a7de9faef27d652b96c2b4db6
F src/rowset.c c64dafba1f9fd876836c8db8682966b9d197eb1f
-F src/select.c 67b0778c9585905c8aa75aaa469e76ef3c1d315a
+F src/select.c 56ecb073e6f6696173ad80493aa14355225b6e53
F src/shell.c db2643650b9268df89a4bedca3f1c6d9e786f1bb
- F src/sqlite.h.in 3ccf717d82101f19548d0b1243f0a6f4854d51ee
+ F src/sqlite.h.in 9d03ceaad971882482c158c0e3d39d361c2c18a1
F src/sqlite3ext.h 1db7d63ab5de4b3e6b83dd03d1a4e64fef6d2a17
-F src/sqliteInt.h 20ab1da1a9a652ea673e5bc586382143914381c0
+F src/sqliteInt.h d87eb4976edacb68fb9b7557163ae0def733354b
F src/sqliteLimit.h ffe93f5a0c4e7bd13e70cd7bf84cfb5c3465f45d
F src/status.c 237b193efae0cf6ac3f0817a208de6c6c6ef6d76
F src/table.c cc86ad3d6ad54df7c63a3e807b5783c90411a08d
F src/utf.c 3ca2c9461b8e942c68da28bfccd448663f536a6f
F src/util.c efb5f8e533d4beef545cf765cab5f7920b4c75f9
F src/vacuum.c 3fe0eebea6d2311c1c2ab2962887d11f7a4dcfb0
-F src/vdbe.c 464e2e30b1287554a23cdaa0b6b010a9dcb5eb29
-F src/vdbe.h 457b6c70f02885cec1f5225b5e6441d067b55d3f
-F src/vdbeInt.h 831c254a6eef237ef4664c8381a0137586567007
-F src/vdbeapi.c 0ab8ada7260b32031ca97f338caecf0812460624
-F src/vdbeaux.c 014a60435469fed0b1c2fdf5e4db6273d7632901
-F src/vdbeblob.c a3f3e0e877fc64ea50165eec2855f5ada4477611
-F src/vdbemem.c c4a5188ff43692f2ca78d3539ad4877e14b70712
-F src/vtab.c aedd76e8670d5a5379f93804398d3ba960125547
+F src/vdbe.c 5e9d870ec390fbc329f11424b121681e8da5d75c
+F src/vdbe.h 080fe6bc1264438becb8bf9b9f3c84074c336b78
+F src/vdbeInt.h 1291908344bcbaa8cf47de86d7108cb92c3a71a3
+F src/vdbeapi.c 8d5013ab6104be757c208a70ffb191cc27d2b688
- F src/vdbeaux.c d8ca68164d20c5b65dfa713095febcb5d37d45b0
++F src/vdbeaux.c 1cc9dd48848059d1c1cd05775659323e0a8654dc
+F src/vdbeblob.c f93cb60ac388633ed3bde8a94ef161ad2dbfb689
+F src/vdbemem.c dc551981833756ea34a3e0b238f759479e7cf526
+F src/vtab.c 10df5c77cea34a49f2ad4e5de763f820d6223eb4
F src/walker.c 1edca756275f158b80f20eb6f104c8d3fcc96a04
- F src/where.c b9ad2d2db4a7d1cda7bed8a7299eb73fde63b5b1
+ F src/where.c a3218dfcf32e3d933270b76a72b97065f24b3f2c
F test/aggerror.test a867e273ef9e3d7919f03ef4f0e8c0d2767944f2
F test/alias.test 4529fbc152f190268a15f9384a5651bbbabc9d87
F test/all.test 14165b3e32715b700b5f0cbf8f6e3833dda0be45
F test/tkt3922.test 022ace32c049e3964f68492c12eb803e8e4856d8
F test/tkt3929.test 6a4c3baefb4e75127356b7d675b5df42c35c00d1
F test/tkt3935.test e15261fedb9e30a4305a311da614a5d8e693c767
-F test/tkt3992.test c193b9643b1c25d020c503a986d5e4089e65c530
+F test/tkt3992.test 2ba939cc646eaa46761dfd55f975cad69bf4e254
F test/tkt3997.test a335fa41ca3985660a139df7b734a26ef53284bd
- F test/tkt4018.test f581cf52dc359171875cb649bdc38b525d7b9309
+ F test/tkt4018.test 7c2c9ba4df489c676a0a7a0e809a1fb9b2185bd1
F test/tokenize.test ce430a7aed48fc98301611429595883fdfcab5d7
F test/trace.test 19ffbc09885c3321d56358a5738feae8587fb377
F test/trans.test d887cb07630dc39879a322d958ad8b006137485c
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl 672f81d693a03f80f5ae60bfefacd8a349e76746
- P 9eb91efda5241609ff18ff15ef5eaa0e86788eab
- R 63b174d38f0bc479f8becc3f97b1ed05
-P 609c5341bea16e4e8bcd15388b209c753ca9e0bb
-R 4434d9008bae80dc68b503672bd862e3
-U drh
-Z 358f98b5bae88b9d1480f5896ee873f8
------BEGIN PGP SIGNATURE-----
-Version: GnuPG v1.4.6 (GNU/Linux)
-
-iD4DBQFKlymCoxKgR168RlERAhGbAJ9JSX+YW4zu0jqF+jN+dnKMOJu+5wCYo0Rg
-s49NcnJb22O8s2ToTSr09A==
-=D2dX
------END PGP SIGNATURE-----
++P 31199db0f77cf4b32d5589a29abd9535b155164b 6abcba1021b237452f542f1fbb69eb75d9f50f53
++R 31e80012e316e6ca372fbf461bf4b6ab
+U dan
- Z 2a154fc741e40d1c8378264e43f74ea7
++Z 33710f063b4132081e125750db8134c3
}
}
+int sqlite3VdbeFrameRestore(VdbeFrame *pFrame){
+ Vdbe *v = pFrame->v;
+ v->aOp = pFrame->aOp;
+ v->nOp = pFrame->nOp;
+ v->aMem = pFrame->aMem;
+ v->nMem = pFrame->nMem;
+ v->apCsr = pFrame->apCsr;
+ v->nCursor = pFrame->nCursor;
+ v->db->lastRowid = pFrame->lastRowid;
+ v->nChange = pFrame->nChange;
+ return pFrame->pc;
+}
+
/*
- ** Close all cursors.
+ ** Close all cursors.
+**
+** Also release any dynamic memory held by the VM in the Vdbe.aMem memory
+** cell array. This is necessary as the memory cell array may contain
+** pointers to VdbeFrame objects, which may in turn contain pointers to
+** open cursors.
*/
static void closeAllCursors(Vdbe *p){
- int i;
- if( p->apCsr==0 ) return;
- for(i=0; i<p->nCursor; i++){
- VdbeCursor *pC = p->apCsr[i];
- if( pC ){
- sqlite3VdbeFreeCursor(p, pC);
- p->apCsr[i] = 0;
+ if( p->pFrame ){
+ VdbeFrame *pFrame = p->pFrame;
+ for(pFrame=p->pFrame; pFrame->pParent; pFrame=pFrame->pParent);
+ sqlite3VdbeFrameRestore(pFrame);
+ }
+ p->pFrame = 0;
+ p->nFrame = 0;
+
+ if( p->apCsr ){
+ int i;
+ for(i=0; i<p->nCursor; i++){
+ VdbeCursor *pC = p->apCsr[i];
+ if( pC ){
+ sqlite3VdbeFreeCursor(p, pC);
+ p->apCsr[i] = 0;
+ }
}
}
+ if( p->aMem ){
+ releaseMemArray(&p->aMem[1], p->nMem);
+ }
}
/*