From: drh Date: Fri, 15 Oct 2010 14:45:12 +0000 (+0000) Subject: Cherry-pick the change at [2d4505510032bf9] into the 3.6.1 branch. X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1b47beaef86f4aff3f3133865f02692077e21962;p=thirdparty%2Fsqlite.git Cherry-pick the change at [2d4505510032bf9] into the 3.6.1 branch. FossilOrigin-Name: ecb1419e4b359e68d583b627ac40cff33cbc06b8 --- diff --git a/manifest b/manifest index 7c695c13c8..49055be3ab 100644 --- a/manifest +++ b/manifest @@ -1,8 +1,8 @@ -----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1 -C An\simprovement\sto\sthe\sSQLITE_FCNTL_SIZE_HINT\schange\sthat\sinvokes\sthe\shint\nless\soften\sand\sonly\swhen\sreally\sneeded. -D 2010-05-17T15:52:44 +C Cherry-pick\sthe\schange\sat\s[2d4505510032bf9]\sinto\sthe\s3.6.1\sbranch. +D 2010-10-15T14:45:13 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0 F Makefile.in 2713ea64947be3b35f35d9a3158bb8299c90b019 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654 @@ -193,7 +193,7 @@ F src/vdbeapi.c 803f365b77a22c1b2680a0dee9202bc75c02bf4a F src/vdbeaux.c 21126e0d319e19125f5e42fceafb17eafe58721c F src/vdbeblob.c f93110888ddc246215e9ba1f831d3d375bfd8355 F src/vdbefifo.c 20fda2a7c4c0bcee1b90eb7e545fefcdbf2e1de7 -F src/vdbemem.c c37b2a266a49eaf0c0f5080157f9f1a908fdaac3 +F src/vdbemem.c d637ff35a41aea7b72977488284ffc52e3791495 F src/vtab.c 9c1bbb54d8b29a3412bff4eee32e9be309d85727 F src/where.c a800184a2d023b15d6f2758b7a6c7ab011258fee F tclinstaller.tcl 4356d9d94d2b5ed5e68f9f0c80c4df3048dd7617 @@ -620,14 +620,14 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff F tool/speedtest8.c 1dbced29de5f59ba2ebf877edcadf171540374d1 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e -P 9a083711712d652613c93b3ad96d4f7361376c7f -R aea3444cc6c24b1c4506b5c6f93e797e +P a1d20ceb9c195ea96f09c2a40c898ca75f504ee1 +R 8cc8bdc0c3cf81de99cf2e9284984853 U drh -Z 528ef0641d2748215fd8a1354579cc0a +Z 856d63ea9343214cf010214001f60c6f -----BEGIN PGP SIGNATURE----- Version: GnuPG v1.4.6 (GNU/Linux) -iD4DBQFL8WZPoxKgR168RlERAsElAJdzpp/0CbCiHpVVmJdP1OrACx5BAJ9I1u53 -hQ/7mwNPgaNvk1lSyt7EQQ== -=34QZ +iD8DBQFMuGj9oxKgR168RlERAnT+AJ0clrambnDmJWe9bQ41R0Ug9lDU/gCff9WO +Cmyzo0wAPkXuY5XqauECLuk= +=Rzx0 -----END PGP SIGNATURE----- diff --git a/manifest.uuid b/manifest.uuid index ff86b4fc06..d82549e6d2 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -a1d20ceb9c195ea96f09c2a40c898ca75f504ee1 \ No newline at end of file +ecb1419e4b359e68d583b627ac40cff33cbc06b8 \ No newline at end of file diff --git a/src/vdbemem.c b/src/vdbemem.c index 8b94e3e4a5..f9511c60e9 100644 --- a/src/vdbemem.c +++ b/src/vdbemem.c @@ -15,7 +15,7 @@ ** only within the VDBE. Interface routines refer to a Mem using the ** name sqlite_value ** -** $Id: vdbemem.c,v 1.121 2008/08/01 20:10:09 drh Exp $ +** $Id: vdbemem.c,v 1.123 2008/09/16 12:06:08 danielk1977 Exp $ */ #include "sqliteInt.h" #include @@ -739,22 +739,21 @@ int sqlite3MemCompare(const Mem *pMem1, const Mem *pMem2, const CollSeq *pColl){ ** comparison function directly */ return pColl->xCmp(pColl->pUser,pMem1->n,pMem1->z,pMem2->n,pMem2->z); }else{ - u8 origEnc = pMem1->enc; const void *v1, *v2; int n1, n2; - /* Convert the strings into the encoding that the comparison - ** function expects */ - v1 = sqlite3ValueText((sqlite3_value*)pMem1, pColl->enc); - n1 = v1==0 ? 0 : pMem1->n; - assert( n1==sqlite3ValueBytes((sqlite3_value*)pMem1, pColl->enc) ); - v2 = sqlite3ValueText((sqlite3_value*)pMem2, pColl->enc); - n2 = v2==0 ? 0 : pMem2->n; - assert( n2==sqlite3ValueBytes((sqlite3_value*)pMem2, pColl->enc) ); - /* Do the comparison */ + Mem c1; + Mem c2; + memset(&c1, 0, sizeof(c1)); + memset(&c2, 0, sizeof(c2)); + sqlite3VdbeMemShallowCopy(&c1, pMem1, MEM_Ephem); + sqlite3VdbeMemShallowCopy(&c2, pMem2, MEM_Ephem); + v1 = sqlite3ValueText((sqlite3_value*)&c1, pColl->enc); + n1 = v1==0 ? 0 : c1.n; + v2 = sqlite3ValueText((sqlite3_value*)&c2, pColl->enc); + n2 = v2==0 ? 0 : c2.n; rc = pColl->xCmp(pColl->pUser, n1, v1, n2, v2); - /* Convert the strings back into the database encoding */ - sqlite3ValueText((sqlite3_value*)pMem1, origEnc); - sqlite3ValueText((sqlite3_value*)pMem2, origEnc); + sqlite3VdbeMemRelease(&c1); + sqlite3VdbeMemRelease(&c2); return rc; } }