Compare commits

...

1 Commits

Author SHA1 Message Date
drh e77228ad9b Make sure temporary registers used within a co-routine are not also used
outside of that co-routine, in order to prevent concurrent use of the same
register for two different things.  Ticket [8c63ff0eca81a9132d8]

FossilOrigin-Name: cc5eda54226506652057687f711e0a7d3aa584af
2014-02-25 19:38:46 +00:00
4 changed files with 14 additions and 8 deletions
+10 -7
View File
@@ -1,5 +1,5 @@
C Also\sadjust\sthe\sorder\sof\sfiles\sin\sthe\samalgamation\sto\sensure\sthat\n_FILE_OFFSET_BITS\sis\sdefined\sbefore\sany\s#include,\sfor\sQNX.
D 2014-02-25T18:12:58.878
C Make\ssure\stemporary\sregisters\sused\swithin\sa\sco-routine\sare\snot\salso\sused\noutside\sof\sthat\sco-routine,\sin\sorder\sto\sprevent\sconcurrent\suse\sof\sthe\ssame\nregister\sfor\stwo\sdifferent\sthings.\s\sTicket\s[8c63ff0eca81a9132d8]
D 2014-02-25T19:38:46.123
F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f
F Makefile.in 2ef13430cd359f7b361bb863504e227b25cc7f81
F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23
@@ -180,7 +180,7 @@ F src/global.c 1d7bb7ea8254ae6a68ed9bfaf65fcb3d1690b486
F src/hash.c d139319967164f139c8d1bb8a11b14db9c4ba3cd
F src/hash.h 8890a25af81fb85a9ad7790d32eedab4b994da22
F src/hwtime.h d32741c8f4df852c7d959236615444e2b1063b08
F src/insert.c d3d1164299faa53b5347f8ff676d3787537fa9e5
F src/insert.c 3e875c32678eba2d94bce52c3d588c72889d2db1
F src/journal.c b4124532212b6952f42eb2c12fa3c25701d8ba8d
F src/legacy.c 0df0b1550b9cc1f58229644735e317ac89131f12
F src/lempar.c cdf0a000315332fc9b50b62f3b5e22e080a0952b
@@ -216,7 +216,7 @@ F src/printf.c 85d07756e45d7496d19439dcae3e6e9e0090f269
F src/random.c d10c1f85b6709ca97278428fd5db5bbb9c74eece
F src/resolve.c ca8b99d894164435f5c55cb304c1b8121705c51e
F src/rowset.c 64655f1a627c9c212d9ab497899e7424a34222e0
F src/select.c 28bff39f9bc5ec618b0719fe3f7b4be9f88b6f02
F src/select.c 7c3aa7b5f1f877fc53a6d18d7674f62806bebe83
F src/shell.c 3dd86bf73ccd079f0e32ef5069600586085e8239
F src/sqlite.h.in a2ef671f92747a5a1c8a47bad5c585a8dd9eca80
F src/sqlite3.rc 11094cc6a157a028b301a9f06b3d03089ea37c3e
@@ -1151,7 +1151,10 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1
F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4
F tool/warnings.sh d1a6de74685f360ab718efda6265994b99bbea01
F tool/win/sqlite.vsix 030f3eeaf2cb811a3692ab9c14d021a75ce41fff
P 953cdd6adadfd46b51ad61d7939cecca154a02cb
R d169e5164f16cb0355a3972eba04326c
P 23001a85cd334090cf6c70d4d7e722a01f4f6899
R 805f25ef58778d8423f464038dea3667
T *branch * tkt-8c63ff0eca
T *sym-tkt-8c63ff0eca *
T -sym-trunk *
U drh
Z 6c6f89e1dd41d2a146386cfa06ae53d9
Z 5c2047d046179f548648d68a3e09d052
+1 -1
View File
@@ -1 +1 @@
23001a85cd334090cf6c70d4d7e722a01f4f6899
cc5eda54226506652057687f711e0a7d3aa584af
+1
View File
@@ -647,6 +647,7 @@ void sqlite3Insert(
assert( pParse->nErr==0 || rc );
if( rc || db->mallocFailed ) goto insert_cleanup;
sqlite3VdbeAddOp1(v, OP_EndCoroutine, regYield);
sqlite3ClearTempRegCache(pParse);
sqlite3VdbeJumpHere(v, addrTop - 1); /* label B: */
assert( pSelect->pEList );
nColumn = pSelect->pEList->nExpr;
+2
View File
@@ -2751,6 +2751,7 @@ static int multiSelectOrderBy(
explainSetInteger(iSub1, pParse->iNextSelectId);
sqlite3Select(pParse, pPrior, &destA);
sqlite3VdbeAddOp1(v, OP_EndCoroutine, regAddrA);
sqlite3ClearTempRegCache(pParse);
sqlite3VdbeJumpHere(v, j1);
/* Generate a coroutine to evaluate the SELECT statement on
@@ -2768,6 +2769,7 @@ static int multiSelectOrderBy(
p->iLimit = savedLimit;
p->iOffset = savedOffset;
sqlite3VdbeAddOp1(v, OP_EndCoroutine, regAddrB);
sqlite3ClearTempRegCache(pParse);
/* Generate a subroutine that outputs the current row of the A
** select as the next output row of the compound select.