From: Scott MacVicar Date: Thu, 28 May 2009 03:20:33 +0000 (+0000) Subject: MFH sync SQLite 3.6.14.2 X-Git-Tag: php-5.3.0RC3~114 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=0062120464ff9e398e4d1d84334e976a47678475;p=php MFH sync SQLite 3.6.14.2 --- diff --git a/ext/sqlite3/libsqlite/sqlite3.c b/ext/sqlite3/libsqlite/sqlite3.c index 0ba8805e02..f439a87fef 100644 --- a/ext/sqlite3/libsqlite/sqlite3.c +++ b/ext/sqlite3/libsqlite/sqlite3.c @@ -4,7 +4,7 @@ /****************************************************************************** ** This file is an amalgamation of many separate C source files from SQLite -** version 3.6.14.1. By combining all the individual C code files into this +** version 3.6.14.2. By combining all the individual C code files into this ** single large file, the entire code can be compiled as a one translation ** unit. This allows many compilers to do optimizations that would not be ** possible if the files were compiled separately. Performance improvements @@ -21,7 +21,7 @@ ** is also in a separate file. This file contains only code for the core ** SQLite library. ** -** This amalgamation was generated on 2009-05-18 18:33:54 UTC. +** This amalgamation was generated on 2009-05-25 12:49:40 UTC. */ #define SQLITE_CORE 1 #define SQLITE_AMALGAMATION 1 @@ -601,7 +601,7 @@ extern "C" { ** ** Requirements: [H10011] [H10014] */ -#define SQLITE_VERSION "3.6.14.1" +#define SQLITE_VERSION "3.6.14.2" #define SQLITE_VERSION_NUMBER 3006014 /* @@ -59473,6 +59473,22 @@ SQLITE_PRIVATE void sqlite3ExprCachePop(Parse *pParse, int N){ } } +/* +** When a cached column is reused, make sure that its register is +** no longer available as a temp register. ticket #3879: that same +** register might be in the cache in multiple places, so be sure to +** get them all. +*/ +static void sqlite3ExprCachePinRegister(Parse *pParse, int iReg){ + int i; + struct yColCache *p; + for(i=0, p=pParse->aColCache; iiReg==iReg ){ + p->tempReg = 0; + } + } +} + /* ** Generate code that will extract the iColumn-th column from ** table pTab and store the column value in a register. An effort @@ -59508,7 +59524,7 @@ SQLITE_PRIVATE int sqlite3ExprCodeGetColumn( VdbeComment((v, "OPT: tab%d.col%d -> r%d", iTable, iColumn, p->iReg)); #endif p->lru = pParse->iCacheCnt++; - p->tempReg = 0; /* This pins the register, but also leaks it */ + sqlite3ExprCachePinRegister(pParse, p->iReg); return p->iReg; } } diff --git a/ext/sqlite3/libsqlite/sqlite3.h b/ext/sqlite3/libsqlite/sqlite3.h index bd2956fd2e..025cc9f2a9 100644 --- a/ext/sqlite3/libsqlite/sqlite3.h +++ b/ext/sqlite3/libsqlite/sqlite3.h @@ -99,7 +99,7 @@ extern "C" { ** ** Requirements: [H10011] [H10014] */ -#define SQLITE_VERSION "3.6.14.1" +#define SQLITE_VERSION "3.6.14.2" #define SQLITE_VERSION_NUMBER 3006014 /*