| Index: third_party/sqlite/src/test/malloc.test | 
| diff --git a/third_party/sqlite/src/test/malloc.test b/third_party/sqlite/src/test/malloc.test | 
| index 678b2be075fe8e2f831790c123f4e4b0f7f7032d..86145672a218a671aa2573307e8282b0ff0fdda9 100644 | 
| --- a/third_party/sqlite/src/test/malloc.test | 
| +++ b/third_party/sqlite/src/test/malloc.test | 
| @@ -20,6 +20,7 @@ | 
|  | 
| set testdir [file dirname $argv0] | 
| source $testdir/tester.tcl | 
| +set ::testprefix malloc | 
|  | 
|  | 
| # Only run these tests if memory debugging is turned on. | 
| @@ -270,7 +271,7 @@ do_malloc_test 9 -sqlprep { | 
| do_malloc_test 10 -tclprep { | 
| catch {db2 close} | 
| db close | 
| -  file delete -force test.db test.db-journal | 
| +  forcedelete test.db test.db-journal | 
| sqlite3 db test.db | 
| sqlite3_extended_result_codes db 1 | 
| db eval {CREATE TABLE abc(a, b, c)} | 
| @@ -341,8 +342,8 @@ if {$tcl_platform(platform)!="windows"} { | 
| BEGIN; | 
| INSERT INTO t1 VALUES(3, 4); | 
| } | 
| -    copy_file test2.db test.db | 
| -    copy_file test2.db-journal test.db-journal | 
| +    forcecopy test2.db test.db | 
| +    forcecopy test2.db-journal test.db-journal | 
| db2 close | 
| } -tclbody { | 
| sqlite3 db test.db | 
| @@ -499,7 +500,7 @@ unset static_string | 
| ifcapable attach { | 
| do_malloc_test 20 -tclprep { | 
| db close | 
| -    file delete -force test2.db test2.db-journal | 
| +    forcedelete test2.db test2.db-journal | 
| sqlite3 db test2.db | 
| sqlite3_extended_result_codes db 1 | 
| db eval {CREATE TABLE t1(x);} | 
| @@ -842,7 +843,7 @@ do_malloc_test 36 -sqlprep { | 
| SELECT test_agg_errmsg16(), group_concat(a) FROM t1 | 
| } | 
|  | 
| -# At one point, if an OOM occured immediately after obtaining a shared lock | 
| +# At one point, if an OOM occurred immediately after obtaining a shared lock | 
| # on the database file, the file remained locked. This test case ensures | 
| # that bug has been fixed.i | 
| if {[db eval {PRAGMA locking_mode}]!="exclusive"} { | 
| @@ -867,31 +868,59 @@ if {[db eval {PRAGMA locking_mode}]!="exclusive"} { | 
| catch { db2 close } | 
| } | 
|  | 
| -ifcapable stat2&&utf16 { | 
| -  do_malloc_test 38 -tclprep { | 
| -    add_test_collate db 0 0 1 | 
| -    execsql { | 
| -      ANALYZE; | 
| -      CREATE TABLE t4(x COLLATE test_collate); | 
| -      CREATE INDEX t4x ON t4(x); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 0, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 1, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 2, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 3, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 4, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 5, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 6, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 7, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 8, 'aaa'); | 
| -      INSERT INTO sqlite_stat2 VALUES('t4', 't4x', 9, 'aaa'); | 
| -    } | 
| -    db close | 
| -    sqlite3 db test.db | 
| -    sqlite3_db_config_lookaside db 0 0 0 | 
| -    add_test_collate db 0 0 1 | 
| -  } -sqlbody { | 
| -    SELECT * FROM t4 AS t41, t4 AS t42 WHERE t41.x>'ddd' AND t42.x>'ccc' | 
| + | 
| +# Test that if an OOM error occurs, aux-data is still correctly destroyed. | 
| +# This test case was causing either a memory-leak or an assert() failure | 
| +# at one point, depending on the configuration. | 
| +# | 
| +do_malloc_test 39 -tclprep { | 
| +  sqlite3 db test.db | 
| +} -sqlbody { | 
| +  SELECT test_auxdata('abc', 'def'); | 
| +} -cleanup { | 
| +  db close | 
| +} | 
| + | 
| +reset_db | 
| +add_test_utf16bin_collate db | 
| +do_execsql_test 40.1 { | 
| +  CREATE TABLE t1(a); | 
| +  INSERT INTO t1 VALUES('fghij'); | 
| +  INSERT INTO t1 VALUES('pqrst'); | 
| +  INSERT INTO t1 VALUES('abcde'); | 
| +  INSERT INTO t1 VALUES('uvwxy'); | 
| +  INSERT INTO t1 VALUES('klmno'); | 
| +} | 
| +do_execsql_test 40.2 { | 
| +  SELECT * FROM t1 ORDER BY 1 COLLATE utf16bin; | 
| +} {abcde fghij klmno pqrst uvwxy} | 
| +do_faultsim_test 40.3 -faults oom-trans* -body { | 
| +  execsql { | 
| +    SELECT * FROM t1 ORDER BY 1 COLLATE utf16bin; | 
| } | 
| +} -test { | 
| +  faultsim_test_result {0 {abcde fghij klmno pqrst uvwxy}} | 
| +  faultsim_integrity_check | 
| +} | 
| + | 
| +reset_db | 
| +add_test_utf16bin_collate db | 
| +set big [string repeat x 200] | 
| +do_execsql_test 41.1 { | 
| +  DROP TABLE IF EXISTS t1; | 
| +  CREATE TABLE t1(a COLLATE utf16bin); | 
| +  INSERT INTO t1 VALUES('fghij' || $::big); | 
| +  INSERT INTO t1 VALUES('pqrst' || $::big); | 
| +  INSERT INTO t1 VALUES('abcde' || $::big); | 
| +  INSERT INTO t1 VALUES('uvwxy' || $::big); | 
| +  INSERT INTO t1 VALUES('klmno' || $::big); | 
| +  CREATE INDEX i1 ON t1(a); | 
| +} | 
| +do_faultsim_test 41.2 -faults oom* -body { | 
| +  execsql { SELECT * FROM t1 WHERE a = ('abcde' || $::big)} | 
| +} -test { | 
| +  faultsim_test_result [list 0 "abcde$::big"] | 
| +  faultsim_integrity_check | 
| } | 
|  | 
| # Ensure that no file descriptors were leaked. | 
|  |