-C Change\sthe\sVdbe.aMem\sarray\sso\sthat\sit\sis\szero-based\sinstead\sof\sone-based.
-D 2016-03-19T23:32:59.000
+C Remove\san\sunreachable\sbranch.\s\sImprovements\sto\scomments.
+D 2016-03-21T00:30:40.611
F Makefile.in f53429fb2f313c099283659d0df6f20f932c861f
F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
F Makefile.msc df0bf9ff7f8b3f4dd9fb4cc43f92fe58f6ec5c66
F src/utf.c 699001c79f28e48e9bcdf8a463da029ea660540c
F src/util.c 34ef7be420f82415ec48131404995ddb6ee7502f
F src/vacuum.c feb1eabb20987983d9350cad98299b21fa811f52
-F src/vdbe.c 90d18d0a91284092a099e9a048982df38920190c
+F src/vdbe.c 3b542ffd5b6aaab55255ec3801fc86dcbfaea543
F src/vdbe.h 6f44193e7be52fd5f7c308175a936555b1e6b101
F src/vdbeInt.h f88d3115e9bde33b01d81f0dd26d8dd51f995991
F src/vdbeapi.c 95b1f8e527240a18a9aea41a655b013bf07a7009
-F src/vdbeaux.c 4a38b9f9dab7350f670b9efff25f605933f81963
+F src/vdbeaux.c c8dd3e4e932bede6363b380519d05c0557ad27ce
F src/vdbeblob.c 3b570b730109e8f653d9d2081649f6e7015113db
F src/vdbemem.c fe76c1f866de362d9b8332e59d74aa44f6560d69
F src/vdbesort.c 307460bfa4de4d1c3901fcd42089159131e34062
F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P d7852c639683a1d305a1e731df3cccafa64b594b
-R 4a4c5282463bb7b6f1f36414c3f19a6f
-T *branch * zero-base-aMem
-T *sym-zero-base-aMem *
-T -sym-trunk *
+P e07b0c47eb5a39623f5fe0e66b939bba0906691c
+R 3918e948fd7d72bc109c3b7a0fa018f3
U drh
-Z 5ba539d03a989ddc8c4359f1a3ede74d
+Z ae546b517b9c79f405f4513ed17a526d
** be freed lazily via the sqlite3_release_memory() API. This
** minimizes the number of malloc calls made by the system.
**
- ** Memory cell for cursor 0 is Mem[0]. The rest are allocated from
+ ** The memory cell for cursor 0 is aMem[0]. The rest are allocated from
** the top of the register space. Cursor 1 is at Mem[p->nMem-1].
** Cursor 2 is at Mem[p->nMem-2]. And so forth.
*/
** variable nMem (and later, VdbeFrame.nChildMem) to this value.
*/
nMem = pProgram->nMem + pProgram->nCsr;
- if( pProgram->nCsr==0 && nMem>0 ) nMem++;
+ assert( nMem>0 );
+ if( pProgram->nCsr==0 ) nMem++;
nByte = ROUND8(sizeof(VdbeFrame))
+ nMem * sizeof(Mem)
+ pProgram->nCsr * sizeof(VdbeCursor *)
nOnce = pParse->nOnce;
if( nOnce==0 ) nOnce = 1; /* Ensure at least one byte in p->aOnceFlag[] */
- /* For each cursor required, also allocate a memory cell. Memory
- ** cells 0 and (nMem-nCursor)..nMem-1 inclusive will never be used by
- ** the vdbe program. Instead they are used to allocate memory for
- ** VdbeCursor/BtCursor structures. The blob of memory associated with
- ** cursor 0 is stored in memory cell 0. Memory cell (nMem-1)
- ** stores the blob of memory associated with cursor 1. Memory cell
- ** (nMem-iCur) is used for cursor iCur.
- **
+ /* Each cursor uses a memory cell. The first cursor (cursor 0) can
+ ** use aMem[0] which is not otherwise used by the VDBE program. Allocate
+ ** space at the end of aMem[] for cursors 1 and greater.
** See also: allocateCursor().
*/
nMem += nCursor;