aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authordrh <drh@noemail.net>2005-12-14 22:51:16 +0000
committerdrh <drh@noemail.net>2005-12-14 22:51:16 +0000
commit26abcb1eef9fb8fe6999e46db55da0bdd98cdeb2 (patch)
treebb957bd517a90a8891e241155a08b37643df6c50 /src
parent268803a95b343c238e4dffc7c69fd2769e9d6f2d (diff)
downloadsqlite-26abcb1eef9fb8fe6999e46db55da0bdd98cdeb2.tar.gz
sqlite-26abcb1eef9fb8fe6999e46db55da0bdd98cdeb2.zip
Avoid using the transient value in the UTF-16 collation needed callback. (CVS 2816)
FossilOrigin-Name: ab6241af29b2e9f5f094b83c13afebe44a8ad6bc
Diffstat (limited to 'src')
-rw-r--r--src/callback.c10
1 files changed, 6 insertions, 4 deletions
diff --git a/src/callback.c b/src/callback.c
index 45556f6b4..4995ec36b 100644
--- a/src/callback.c
+++ b/src/callback.c
@@ -13,7 +13,7 @@
** This file contains functions used to access the internal hash tables
** of user defined functions and collation sequences.
**
-** $Id: callback.c,v 1.6 2005/12/14 20:11:30 drh Exp $
+** $Id: callback.c,v 1.7 2005/12/14 22:51:17 drh Exp $
*/
#include "sqliteInt.h"
@@ -35,11 +35,13 @@ static void callCollNeeded(sqlite3 *db, const char *zName, int nName){
#ifndef SQLITE_OMIT_UTF16
if( db->xCollNeeded16 ){
char const *zExternal;
- sqlite3_value *pTmp = sqlite3GetTransientValue(db);
+ sqlite3_value *pTmp = sqlite3ValueNew();
sqlite3ValueSetStr(pTmp, nName, zName, SQLITE_UTF8, SQLITE_STATIC);
zExternal = sqlite3ValueText(pTmp, SQLITE_UTF16NATIVE);
- if( !zExternal ) return;
- db->xCollNeeded16(db->pCollNeededArg, db, (int)db->enc, zExternal);
+ if( zExternal ){
+ db->xCollNeeded16(db->pCollNeededArg, db, (int)db->enc, zExternal);
+ }
+ sqlite3ValueFree(pTmp);
}
#endif
}