]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Merge with main branch.
authordan <dan@noemail.net>
Mon, 31 Aug 2009 05:39:58 +0000 (05:39 +0000)
committerdan <dan@noemail.net>
Mon, 31 Aug 2009 05:39:58 +0000 (05:39 +0000)
FossilOrigin-Name: 6e09e28751a7071969ef9f3445f4092d2c28f358

1  2 
manifest
manifest.uuid
src/vdbeaux.c

diff --cc manifest
index 5b2e27eec1aa4c06551e49bcab51493c5a222b4c,ebd310226dbcfd8a011ce59b7c803eea833544d0..d3953778915aa0df8d5b978d399862903008837a
+++ b/manifest
@@@ -1,5 -1,8 +1,5 @@@
- 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
@@@ -105,10 -109,10 +106,10 @@@ F src/auth.c 802a9439dfa0b8c208b10055cb
  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
@@@ -152,17 -156,17 +153,17 @@@ F src/parse.y 6c42631e72a3d14cde2bee85e
  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
@@@ -204,16 -208,16 +205,16 @@@ F src/update.c 574464e0049eb289ab863c58
  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
@@@ -661,9 -665,9 +662,9 @@@ F test/tkt3918.test e6cdf6bfcfe9ba939d8
  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
@@@ -747,7 -751,14 +748,7 @@@ F tool/speedtest2.tcl ee2149167303ba8e9
  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
diff --cc manifest.uuid
index a7c65c718dc2cf6734e4906a59f1450e06ccd6e1,3ac9c95bcf342ffe7c53e3c97674d7143516f424..dceef0d8d5df1c4cec9bd456a37d3535539eccf1
@@@ -1,1 -1,1 +1,1 @@@
- 31199db0f77cf4b32d5589a29abd9535b155164b
 -6abcba1021b237452f542f1fbb69eb75d9f50f53
++6e09e28751a7071969ef9f3445f4092d2c28f358
diff --cc src/vdbeaux.c
index 23acfef29be3e3a16bc7e0b6bfcc0cc0f5b7d924,76d1d8cbeb3fe5d1e3165713c94fbe43d23c3d9b..f48c415b1eb96dc95bd18b71c16f6ba83a706866
@@@ -1331,49 -1232,19 +1334,49 @@@ void sqlite3VdbeFreeCursor(Vdbe *p, Vdb
    }
  }
  
 +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);
 +  }
  }
  
  /*