Do not reuse function parameters in subsequent expressions since the

function call might have triggered a text encoding change.
Fix for ticket [2ea2425d34be].

FossilOrigin-Name: f22e388727f0ba0f187cdee51ff8ba17a5d50b8a
This commit is contained in:
drh 2009-09-03 01:18:00 +00:00
parent 4e0b31ceda
commit d7d385dde0
4 changed files with 44 additions and 10 deletions

View File

@ -1,8 +1,8 @@
-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1
C Documentation\supdates\sfor\sthe\sversion\sinfo\s#defines\sand\sC\sinterfaces.
D 2009-09-02T19:04:24
C Do\snot\sreuse\sfunction\sparameters\sin\ssubsequent\sexpressions\ssince\sthe\s\nfunction\scall\smight\shave\striggered\sa\stext\sencoding\schange.\nFix\sfor\sticket\s[2ea2425d34be].
D 2009-09-03T01:18:01
F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
F Makefile.in 73ddeec9dd10b85876c5c2ce1fdce627e1dcc7f8
F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@ -117,7 +117,7 @@ F src/callback.c 9bc0ae998f15207d3115224979331c0aafc9bcc3
F src/complete.c 5ad5c6cd4548211867c204c41a126d73a9fbcea0
F src/date.c ab5f7137656652a48434d64f96bdcdc823bb23b3
F src/delete.c 6b95963dabd558d45385e9b5be1fb4aa7ba7fa62
F src/expr.c cadf65591f130e052aaa9718e19ec019b7cb598e
F src/expr.c 2605f0f161442e3153e0c41e987525260e9ad306
F src/fault.c dc88c821842157460750d2d61a8a8b4197d047ff
F src/func.c e536218d193b8d326aab91120bc4c6f28aa2b606
F src/global.c 271952d199a8cc59d4ce840b3bbbfd2f30c8ba32
@ -584,6 +584,7 @@ F test/thread2.test 91f105374f18a66e73a3254c28fe7c77af69bdea
F test/thread_common.tcl b65e6b1d1d90dc885e10ad080896c6c56eef0819
F test/threadtest1.c 6029d9c5567db28e6dc908a0c63099c3ba6c383b
F test/threadtest2.c ace893054fa134af3fc8d6e7cfecddb8e3acefb9
F test/tkt-2ea2425d34.test 1cf13e6f75d149b3209a0cb32927a82d3d79fb28
F test/tkt1435.test f8c52c41de6e5ca02f1845f3a46e18e25cadac00
F test/tkt1443.test bacc311da5c96a227bf8c167e77a30c99f8e8368
F test/tkt1444.test a9d72f9e942708bd82dde6c707da61c489e213e9
@ -752,14 +753,14 @@ F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
F tool/vdbe-compress.tcl d70ea6d8a19e3571d7ab8c9b75cba86d1173ff0f
P 5ac69ed608affb4104b4665560a3a490ea5af217
R 10566af31b0374c7038626dfeef64758
P 69055e9b4cb6346e9e10fd9dd65e6ea06b959e76
R 7bf564b16edb1681dea7652f8bb4c7d7
U drh
Z 7f6492299f8121487dfc1f6dbb36f12d
Z 7cf4ebdc1da81063254cac877fefb993
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.6 (GNU/Linux)
iD8DBQFKnsG6oxKgR168RlERAupDAJoCIqGchu6twHL3jTPBr50BDayzSQCeONcm
IJKAS+bpUCteUCbcYgqwY+k=
=LcCP
iD8DBQFKnxlMoxKgR168RlERApcIAJ97EhKOwWFb+tWJWmzMa9COqA10WACfVx0d
/MeR2s3kHlBnnVZggaFCIXs=
=s4CU
-----END PGP SIGNATURE-----

View File

@ -1 +1 @@
69055e9b4cb6346e9e10fd9dd65e6ea06b959e76
f22e388727f0ba0f187cdee51ff8ba17a5d50b8a

View File

@ -2371,7 +2371,9 @@ int sqlite3ExprCodeTarget(Parse *pParse, Expr *pExpr, int target){
}
if( pFarg ){
r1 = sqlite3GetTempRange(pParse, nFarg);
sqlite3ExprCachePush(pParse); /* Ticket 2ea2425d34be */
sqlite3ExprCodeExprList(pParse, pFarg, r1, 1);
sqlite3ExprCachePop(pParse, 1); /* Ticket 2ea2425d34be */
}else{
r1 = 0;
}

31
test/tkt-2ea2425d34.test Normal file
View File

@ -0,0 +1,31 @@
# 2009 September 2
#
# The author disclaims copyright to this source code. In place of
# a legal notice, here is a blessing:
#
# May you do good and not evil.
# May you find forgiveness for yourself and forgive others.
# May you share freely, never taking more than you give.
#
#***********************************************************************
# This file implements regression tests for SQLite library.
#
# This file implements tests to verify that ticket [2ea2425d34be] has been
# fixed.
#
set testdir [file dirname $argv0]
source $testdir/tester.tcl
do_test tkt-2ea24-1.1 {
db eval {
PRAGMA encoding=UTF16;
CREATE TABLE t1(a,b);
INSERT INTO t1 VALUES(1,'abc');
INSERT INTO t1 VALUES(2,'def');
INSERT INTO t1 VALUES(3,'ghi');
SELECT a FROM t1 WHERE length(b)<10 AND b<>'def' ORDER BY a;
}
} {1 3}
finish_test