]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Make sure the sqlite3_result_pointer() interface does not leave a VM register
authordrh <drh@noemail.net>
Thu, 24 Aug 2017 13:55:46 +0000 (13:55 +0000)
committerdrh <drh@noemail.net>
Thu, 24 Aug 2017 13:55:46 +0000 (13:55 +0000)
in an inconsistent state.  Fix for ticket [7486aa54b968e9b5].  Test cases
are in TH3.

FossilOrigin-Name: d2f9230c5c7ad6166e7d2b649f77960fa58b1cb583e529a43882753ab348413c

manifest
manifest.uuid
src/vdbeapi.c

index 9a9edb7494b730369360dce45549acec343a8687..0da8256bdba293560868c447b4722b0b0470b6a4 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Performance\soptimization\sto\spageFindSlot()\sin\sthe\sb-tree\slayer.
-D 2017-08-23T23:09:03.990
+C Make\ssure\sthe\ssqlite3_result_pointer()\sinterface\sdoes\snot\sleave\sa\sVM\sregister\nin\san\sinconsistent\sstate.\s\sFix\sfor\sticket\s[7486aa54b968e9b5].\s\sTest\scases\nare\sin\sTH3.
+D 2017-08-24T13:55:46.912
 F Makefile.in c644bbe8ebe4aae82ad6783eae6b6beea4c727b99ff97568b847ced5e2ac7afb
 F Makefile.linux-gcc 7bc79876b875010e8c8f9502eb935ca92aa3c434
 F Makefile.msc 25b154da7f0b3d4924f27378c1f8d006285b80811f1ccf3ed953dbebf6282136
@@ -527,7 +527,7 @@ F src/vacuum.c 90839322fd5f00df9617eb21b68beda9b6e2a2937576b0d65985e4aeb1c53739
 F src/vdbe.c 82fc4553a0986a06bdd0d2b03a424e159bba5c74802fabb2841aa6cd27ccd962
 F src/vdbe.h d50cadf12bcf9fb99117ef392ce1ea283aa429270481426b6e8b0280c101fd97
 F src/vdbeInt.h 1fe00770144c12c4913128f35262d11527ef3284561baaab59b947a41c08d0d9
-F src/vdbeapi.c 05d6b14ab73952db0d73f6452d6960216997bd966a710266b2fe051f25326abc
+F src/vdbeapi.c 9c670ca0dcc1cd86373aa353b747b26fe531ca5cd4331690c611d1f03842e2a1
 F src/vdbeaux.c 2dff8186d34e0e525838f77b2fac70bd480f0273a77015bf21b6a08f2792da82
 F src/vdbeblob.c db3cf91060f6f4b2f1358a4200e844697990752177784c7c95da00b7ac9f1c7b
 F src/vdbemem.c 2f9d672af5260f0145787e1dc2c6985414987cc0dc575133a0dc17dda767d868
@@ -1650,7 +1650,7 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P bc1ec123ce05c9d16b0942f870381145dc9725764e47806939ff207a73066f4d
-R f6b2325c9199ea50423580e65f552033
+P 59560d079fab4b91ec50855cc60349da178209c38fb6dae674ff874ccfc7f5fa
+R f928c1195d839713ee78e6b46c1884f1
 U drh
-Z 8c1fbb63bd6c44847b2e56eee310d2d1
+Z fae59aff59c16e3b9c2ad1cd0f0e8fa3
index 7fb20a017d6479a5ce81e9cb1414acd8d32109ad..c161e3d95e0b1ca0055977b572175cbd8b41f8b4 100644 (file)
@@ -1 +1 @@
-59560d079fab4b91ec50855cc60349da178209c38fb6dae674ff874ccfc7f5fa
\ No newline at end of file
+d2f9230c5c7ad6166e7d2b649f77960fa58b1cb583e529a43882753ab348413c
\ No newline at end of file
index 3f4ef8f6a993655434bbd79a22b77f75becc79b6..b9df40b8fd35357c7c1f7b105170706ccd7fd843 100644 (file)
@@ -398,7 +398,8 @@ void sqlite3_result_pointer(
 ){
   Mem *pOut = pCtx->pOut;
   assert( sqlite3_mutex_held(pOut->db->mutex) );
-  sqlite3VdbeMemSetNull(pOut);
+  sqlite3VdbeMemRelease(pOut);
+  pOut->flags = MEM_Null;
   sqlite3VdbeMemSetPointer(pOut, pPtr, zPType, xDestructor);
 }
 void sqlite3_result_subtype(sqlite3_context *pCtx, unsigned int eSubtype){