From 10ca5b4809ce5592a3949cba6f766a66c52f8643 Mon Sep 17 00:00:00 2001 From: drh Date: Fri, 22 May 2015 21:04:54 +0000 Subject: [PATCH] Make sure sqlite3_value_dup() works correctly even for sqlite3_value objects that are marked SQLITE_STATIC. FossilOrigin-Name: f332ffc39b7a17fd6254d8dc699293a57a508ba0 --- manifest | 12 ++++++------ manifest.uuid | 2 +- src/vdbeapi.c | 11 +++++------ 3 files changed, 12 insertions(+), 13 deletions(-) diff --git a/manifest b/manifest index 7a27a93f1a..2d270a2d6d 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Fix\sminor\sissues\swith\sthe\ssqlite3_value_dup()\sinterface. -D 2015-05-22T19:55:10.064 +C Make\ssure\ssqlite3_value_dup()\sworks\scorrectly\seven\sfor\ssqlite3_value\nobjects\sthat\sare\smarked\sSQLITE_STATIC. +D 2015-05-22T21:04:54.462 F Makefile.arm-wince-mingw32ce-gcc d6df77f1f48d690bd73162294bbba7f59507c72f F Makefile.in 0a6ae26396ec696221021780dffbb894ff3cead7 F Makefile.linux-gcc 91d710bdc4998cb015f39edf3cb314ec4f4d7e23 @@ -315,7 +315,7 @@ F src/vacuum.c 2ddd5cad2a7b9cef7f9e431b8c7771634c6b1701 F src/vdbe.c 6aee8a041742413ab3113e6682bc7ad1628a2bbe F src/vdbe.h 7e538ecf47dccb307ea2d087c3ddc2dd8d70e79d F src/vdbeInt.h f0ccddac48583d5f762dc554a9f79e85ea8807e0 -F src/vdbeapi.c 06b7b785dce358045138b8e10dbbc9d25ebf27c6 +F src/vdbeapi.c 6a0d7757987018ff6b1b81bc5293219cd26bb299 F src/vdbeaux.c efe1667d31e8648dbe04a441e5aa9b62dbee2f03 F src/vdbeblob.c 4f2e8e075d238392df98c5e03a64342465b03f90 F src/vdbemem.c 21f9169289a804308f6cdde55e9417fb8336997f @@ -1278,7 +1278,7 @@ F tool/vdbe_profile.tcl 67746953071a9f8f2f668b73fe899074e2c6d8c1 F tool/warnings-clang.sh f6aa929dc20ef1f856af04a730772f59283631d4 F tool/warnings.sh 0abfd78ceb09b7f7c27c688c8e3fe93268a13b32 F tool/win/sqlite.vsix deb315d026cc8400325c5863eef847784a219a2f -P 9605d008f5c763137e9734d033fe4510ca316858 -R 0084568ba3e04d525eb096dd7e201fe6 +P 95edcf5010ecb8edd8eb74279c4766f9b655d4a2 +R 45d42bfafc5b3542d7e7526b77707d5f U drh -Z 0e179fe2ecd0f632949a18d2f8a6b466 +Z f0fdfb1783681230e2e7fa3690d67253 diff --git a/manifest.uuid b/manifest.uuid index aaea6a210b..ea8a4aa01a 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -95edcf5010ecb8edd8eb74279c4766f9b655d4a2 \ No newline at end of file +f332ffc39b7a17fd6254d8dc699293a57a508ba0 \ No newline at end of file diff --git a/src/vdbeapi.c b/src/vdbeapi.c index dcdb8292c9..010fbfba16 100644 --- a/src/vdbeapi.c +++ b/src/vdbeapi.c @@ -224,12 +224,11 @@ sqlite3_value *sqlite3_value_dup(const sqlite3_value *pOrig){ pNew->flags &= ~MEM_Dyn; pNew->db = 0; if( pNew->flags&(MEM_Str|MEM_Blob) ){ - if( 0==(pOrig->flags&MEM_Static) ){ - pNew->flags |= MEM_Ephem; - if( sqlite3VdbeMemMakeWriteable(pNew)!=SQLITE_OK ){ - sqlite3ValueFree(pNew); - pNew = 0; - } + pNew->flags &= ~(MEM_Static|MEM_Dyn); + pNew->flags |= MEM_Ephem; + if( sqlite3VdbeMemMakeWriteable(pNew)!=SQLITE_OK ){ + sqlite3ValueFree(pNew); + pNew = 0; } } return pNew; -- 2.39.5