]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Enhance sqlite3_shutdown() so that it automatically invokes
authordrh <drh@noemail.net>
Thu, 9 Apr 2009 01:23:49 +0000 (01:23 +0000)
committerdrh <drh@noemail.net>
Thu, 9 Apr 2009 01:23:49 +0000 (01:23 +0000)
sqlite3_reset_auto_extension().  This is a harmless no-op if applications
are already calling sqlite3_reset_auto_extension() prior to sqlite3_shutdown().
And it prevents possible memory corruption if they do not.  So it works
either way.  Most of the changes are to the test cases. (CVS 6475)

FossilOrigin-Name: 0c41f7cff4f6ffb9321f6f6b6ef3e431b750d41a

manifest
manifest.uuid
src/main.c
test/lookaside.test
test/malloc.test
test/permutations.test
test/speed1.test
test/speed1p.test
test/tester.tcl
test/tkt2565.test

index 225a076175028dc74b6fbe8bd0def30d28b46cb8..a67a789ec8a89ff7bc6dadab92364d7b6ab2e785 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Simplify\sthe\simplementation\sof\sthe\scolumnName()\sfunction\sin\svdbeapi.c.\nThis\sis\sa\scode\scleanup\sonly\s-\sno\sbehavior\schanges.\s(CVS\s6474)
-D 2009-04-08T23:05:29
+C Enhance\ssqlite3_shutdown()\sso\sthat\sit\sautomatically\sinvokes\nsqlite3_reset_auto_extension().\s\sThis\sis\sa\sharmless\sno-op\sif\sapplications\nare\salready\scalling\ssqlite3_reset_auto_extension()\sprior\sto\ssqlite3_shutdown().\nAnd\sit\sprevents\spossible\smemory\scorruption\sif\sthey\sdo\snot.\s\sSo\sit\sworks\neither\sway.\s\sMost\sof\sthe\schanges\sare\sto\sthe\stest\scases.\s(CVS\s6475)
+D 2009-04-09T01:23:49
 F Makefile.arm-wince-mingw32ce-gcc fcd5e9cd67fe88836360bb4f9ef4cb7f8e2fb5a0
 F Makefile.in 583e87706abc3026960ed759aff6371faf84c211
 F Makefile.linux-gcc d53183f4aa6a9192d249731c90dbdffbd2c68654
@@ -122,7 +122,7 @@ F src/insert.c 71286d081a919a27ef22eaeccbe2718f93dc6aa9
 F src/journal.c e00df0c0da8413ab6e1bb7d7cab5665d4a9000d0
 F src/legacy.c 2ad5b52df322d0f132f66817095e0e79c8942611
 F src/loadext.c 3f96631089fc4f3871a67f02f2e4fc7ea4d51edc
-F src/main.c 5e36e465932ad2b80c38b85dc82d2f2bf6e0f8ae
+F src/main.c 96636e2ae86e1c36c61189b7760d89f01d35f1e2
 F src/malloc.c a1f0f8ae110abb8eb546e259ab0eaea7e0f9b588
 F src/mem0.c f2f84062d1f35814d6535c9f9e33de3bfb3b132c
 F src/mem1.c e6d5c23941288df8191b8a98c28e3f57771e2270
@@ -436,10 +436,10 @@ F test/lock3.test f271375930711ae044080f4fe6d6eda930870d00
 F test/lock4.test 991b57669a868bbfd39fe0c0df0d493985829105
 F test/lock5.test 6b1f78f09ad1522843dad571b76b321e6f439bf7
 F test/lock6.test 862aa71e97b288d6b3f92ba3313f51bd0b003776
-F test/lookaside.test b3e928efeb9a31147bb72350462831e104ec2c1e
+F test/lookaside.test 1dd350dc6dff015c47c07fcc5a727a72fc5bae02
 F test/main.test 187a9a1b5248ed74a83838c581c15ec6023b555b
 F test/make-where7.tcl 40bb740b37eead343eaf57b74ab72d2a5a304745
-F test/malloc.test 7388109bccc42888ad4e2cb01b2169eb98d4d283
+F test/malloc.test cd2b9f515ba98beb5e335acdd94c3ad7a6f7fc4a
 F test/malloc3.test 4bc57f850b212f706f3e1b37c4eced1d5a727cd1
 F test/malloc4.test 957337613002b7058a85116493a262f679f3a261
 F test/malloc5.test 20d1a0884b03edf811bfd7005faade028367e7c8
@@ -491,7 +491,7 @@ F test/pageropt.test 3ee6578891baaca967f0bd349e4abfa736229e1a
 F test/pagesize.test 0d9ff3fedfce6e5ffe8fa7aca9b6d3433a2e843b
 F test/pcache.test 70ad1d65cf73f6a0a7501e0236312eb214d93a55
 F test/pcache2.test 46efd980a89f737847b99327bda19e08fe11e402
-F test/permutations.test 7129bc5d215dfe1da527b784b95b041a5a2be397
+F test/permutations.test 4c25ae10e504c13dabe87ec6c67c6c4a062e5395
 F test/pragma.test a35b0be36542477183168cdb8b743f5c0d883c4d
 F test/pragma2.test 5364893491b9231dd170e3459bfc2e2342658b47
 F test/printf.test 47e9e5bbec8509023479d54ceb71c9d05a95308a
@@ -539,9 +539,9 @@ F test/sidedelete.test f0ad71abe6233e3b153100f3b8d679b19a488329
 F test/soak.test d9d0a5e5c0157115c9a17f526f12691fe146768d
 F test/softheap1.test 73ebd6e020d2954d965da2072baba5922fc8fb6a
 F test/sort.test 0e4456e729e5a92a625907c63dcdedfbe72c5dc5
-F test/speed1.test c74564fea46e094d6b518bf464c355991905eea2
+F test/speed1.test f2974a91d79f58507ada01864c0e323093065452
 F test/speed1p.explain d841e650a04728b39e6740296b852dccdca9b2cb
-F test/speed1p.test 7f046639ffd70e6b1deb38684ef2208a43b45df3
+F test/speed1p.test c4a469f29f135f4d76c55b1f2a52f36e209466cc
 F test/speed2.test 53177056baf6556dcbdcf032bbdfc41c1aa74ded
 F test/speed3.test e312d7e442a5047d730569fdae2ba99bc94e1a13
 F test/speed4.test abc0ad3399dcf9703abed2fff8705e4f8e416715
@@ -558,7 +558,7 @@ F test/tclsqlite.test 8b1150d0486c4848c70d96422513a91c5342be0e
 F test/tempdb.test b88ac8a19823cf771d742bf61eef93ef337c06b1
 F test/temptable.test 5d8ca46be28cc06c887c5a77df650843b7edbae1
 F test/temptrigger.test 8fc2ce469590465f85b8cc4176e0fe4595b3bf62
-F test/tester.tcl 9bdc35fac11b0a75cae3f91e527098ba879dbfc2
+F test/tester.tcl b22f925f3c6eea6283e29a81a7379091ca89ab40
 F test/thread001.test a3e6a7254d1cb057836cb3145b60c10bf5b7e60f
 F test/thread002.test afd20095e6e845b405df4f2c920cb93301ca69db
 F test/thread003.test b824d4f52b870ae39fc5bae4d8070eca73085dca
@@ -593,7 +593,7 @@ F test/tkt2339.test 73bd17818924cd2ac442e5fd9916b58565739450
 F test/tkt2391.test ab7a11be7402da8b51a5be603425367aa0684567
 F test/tkt2409.test 464d55beb32e3b12ce2b4bbf9857d063c4c34297
 F test/tkt2450.test 77ed94863f2049c1420288ddfea2d41e5e0971d6
-F test/tkt2565.test de9673c9e3affbf9574c0727556c5140cb9c53a4
+F test/tkt2565.test 8be666e927cb207aae88188f31c331870878b650
 F test/tkt2640.test 28134f5d1e05658ef182520cf0b680fa3de5211b
 F test/tkt2643.test 3f3ebb743da00d4fed4fcf6daed92a0e18e57813
 F test/tkt2686.test 08f0f584461bc4990376936daa0a9bd3e6e81671
@@ -716,7 +716,7 @@ F tool/speedtest16.c c8a9c793df96db7e4933f0852abb7a03d48f2e81
 F tool/speedtest2.tcl ee2149167303ba8e95af97873c575c3e0fab58ff
 F tool/speedtest8.c 2902c46588c40b55661e471d7a86e4dd71a18224
 F tool/speedtest8inst1.c 293327bc76823f473684d589a8160bde1f52c14e
-P f322be3833c4a938ee7d9e4bcfd5decaca57db0b
-R e80187c69eb5fab0addc01c50974cf7a
+P 0628f5864f8cc035b41bbe644bd8ec8fb43c70ce
+R 0cf963266eec9b2fca0ecf33410b18cd
 U drh
-Z 3cf051c8edaf2e9ebf6aff384812ac24
+Z c7192b6903fa3facf78f58d5b0aaedc3
index b29f92a01a55352aa39b4199ed6b50f41fb5cec7..dda76da0ddcefc9ea79027142e5b6526bcab6683 100644 (file)
@@ -1 +1 @@
-0628f5864f8cc035b41bbe644bd8ec8fb43c70ce
\ No newline at end of file
+0c41f7cff4f6ffb9321f6f6b6ef3e431b750d41a
\ No newline at end of file
index 57a1a86c22d2731924ede89ad61bd65c6588ac04..e9447e3eb960f1bd728228a08550cace416d177f 100644 (file)
@@ -14,7 +14,7 @@
 ** other files are for internal use by SQLite and should not be
 ** accessed by users of the library.
 **
-** $Id: main.c,v 1.535 2009/04/02 17:22:42 drh Exp $
+** $Id: main.c,v 1.536 2009/04/09 01:23:49 drh Exp $
 */
 #include "sqliteInt.h"
 
@@ -219,6 +219,7 @@ int sqlite3_shutdown(void){
   if( sqlite3GlobalConfig.isInit ){
     sqlite3_os_end();
   }
+  sqlite3_reset_auto_extension();
   sqlite3MallocEnd();
   sqlite3MutexEnd();
   sqlite3GlobalConfig.isInit = 0;
index 9584b5df41fd1c2493b037af895bda5915bc5b76..3c445604e45d7a31336a4572894973ab7125f647 100644 (file)
@@ -11,7 +11,7 @@
 #
 # Tests for the lookaside memory allocator.
 #
-# $Id: lookaside.test,v 1.9 2009/03/24 15:08:10 drh Exp $
+# $Id: lookaside.test,v 1.10 2009/04/09 01:23:49 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -26,6 +26,7 @@ sqlite3_shutdown
 sqlite3_config_pagecache 0 0
 sqlite3_config_scratch 0 0
 sqlite3_initialize
+autoinstall_test_functions
 sqlite3 db test.db
 
 # Make sure sqlite3_db_config() and sqlite3_db_status are working.
@@ -104,5 +105,6 @@ do_test lookaside-4.1 {
   catch sqlite3_config_error
 } {0}
 sqlite3_initialize
+autoinstall_test_functions
 
 finish_test
index 0ce93ba7903667732c40d2a3c86fcf80bf8febee..650b7145dd0c7388a7199acb99fd2838344bfa00 100644 (file)
@@ -16,7 +16,7 @@
 # to see what happens in the library if a malloc were to really fail
 # due to an out-of-memory situation.
 #
-# $Id: malloc.test,v 1.77 2009/03/19 18:51:07 danielk1977 Exp $
+# $Id: malloc.test,v 1.78 2009/04/09 01:23:49 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -194,6 +194,7 @@ ifcapable vacuum {
   } 
 }
 
+autoinstall_test_functions
 do_malloc_test 7 -sqlprep {
   CREATE TABLE t1(a, b);
   INSERT INTO t1 VALUES(1, 2);
@@ -659,6 +660,7 @@ do_malloc_test 27 -tclprep {
     error "out of memory"
   }
 }
+autoinstall_test_functions
 
 # Test that malloc failures that occur while processing INDEXED BY
 # clauses are handled correctly.
index 6553e128627c139ad640704e7d1c18f4874a5955..b3c416f43020a374c03da17139d6e5aa0226e89d 100644 (file)
@@ -9,7 +9,7 @@
 #
 #***********************************************************************
 #
-# $Id: permutations.test,v 1.46 2009/04/01 23:09:44 drh Exp $
+# $Id: permutations.test,v 1.47 2009/04/09 01:23:49 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -179,12 +179,14 @@ run_tests "memsubsys1" -description {
   sqlite3_config_pagecache 4096 24
   sqlite3_config_scratch 25000 1
   sqlite3_initialize
+  autoinstall_test_functions
 } -shutdown {
   catch {db close}
   sqlite3_shutdown
   sqlite3_config_pagecache 0 0
   sqlite3_config_scratch 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 }
 
 # Run some tests using pre-allocated page and scratch blocks. This time
@@ -205,12 +207,14 @@ run_tests "memsubsys2" -description {
   sqlite3_config_pagecache 512 5
   sqlite3_config_scratch 1000 1
   sqlite3_initialize
+  autoinstall_test_functions
 } -shutdown {
   catch {db close}
   sqlite3_shutdown
   sqlite3_config_pagecache 0 0
   sqlite3_config_scratch 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 }
 
 # Run all tests with the lookaside allocator disabled.
@@ -222,11 +226,13 @@ run_tests "nolookaside" -description {
   sqlite3_shutdown
   sqlite3_config_lookaside 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 } -shutdown {
   catch {db close}
   sqlite3_shutdown
   sqlite3_config_lookaside 100 500
   sqlite3_initialize
+  autoinstall_test_functions
 }
 
 # Run some tests in SQLITE_CONFIG_SINGLETHREAD mode.
@@ -237,6 +243,8 @@ run_tests "singlethread" -description {
   catch {db close}
   sqlite3_shutdown
   catch {sqlite3_config singlethread}
+  sqlite3_initialize
+  autoinstall_test_functions
 } -include {
   delete.test   delete2.test  insert.test  rollback.test  select1.test
   select2.test  trans.test    update.test  vacuum.test    types.test
@@ -245,6 +253,8 @@ run_tests "singlethread" -description {
   catch {db close}
   sqlite3_shutdown
   catch {sqlite3_config serialized}
+  sqlite3_initialize
+  autoinstall_test_functions
 }
 
 run_tests "nomutex" -description {
@@ -274,6 +284,8 @@ run_tests "multithread" -description {
   catch {db close}
   sqlite3_shutdown
   catch {sqlite3_config multithread}
+  sqlite3_initialize
+  autoinstall_test_functions
 } -include {
   delete.test   delete2.test  insert.test  rollback.test  select1.test
   select2.test  trans.test    update.test  vacuum.test    types.test
@@ -282,6 +294,8 @@ run_tests "multithread" -description {
   catch {db close}
   sqlite3_shutdown
   catch {sqlite3_config serialized}
+  sqlite3_initialize
+  autoinstall_test_functions
 }
 
 # Run some tests in SQLITE_OPEN_FULLMUTEX mode.
@@ -480,12 +494,12 @@ ifcapable mem3 {
     autoinstall_test_functions
   } -shutdown {
     catch {db close}
-    sqlite3_reset_auto_extension
     sqlite3_shutdown
     sqlite3_config_heap 0 0
     sqlite3_config_lookaside 100 500
     install_malloc_faultsim 1 
     sqlite3_initialize
+    autoinstall_test_functions
   }
 }
 
@@ -501,7 +515,6 @@ ifcapable mem5 {
     collate5.test             limit.test                zeroblob.test
   } -initialize {
     catch {db close}
-    sqlite3_reset_auto_extension
     sqlite3_shutdown
     sqlite3_config_heap 25000000 64
     sqlite3_config_lookaside 0 0
@@ -510,12 +523,12 @@ ifcapable mem5 {
     autoinstall_test_functions
   } -shutdown {
     catch {db close}
-    sqlite3_reset_auto_extension
     sqlite3_shutdown
     sqlite3_config_heap 0 0
     sqlite3_config_lookaside 100 500
     install_malloc_faultsim 1 
     sqlite3_initialize
+    autoinstall_test_functions
   }
 
   run_tests "memsys5-2" -description {
@@ -524,7 +537,6 @@ ifcapable mem5 {
     select1.test 
   } -initialize {
     catch {db close}
-    sqlite3_reset_auto_extension
     sqlite3_shutdown
     sqlite3_config_heap 40000000 16
     sqlite3_config_lookaside 0 0
@@ -533,12 +545,12 @@ ifcapable mem5 {
     autoinstall_test_functions
   } -shutdown {
     catch {db close}
-    sqlite3_reset_auto_extension
     sqlite3_shutdown
     sqlite3_config_heap 0 0
     sqlite3_config_lookaside 100 500
     install_malloc_faultsim 1 
     sqlite3_initialize
+    autoinstall_test_functions
   }
 }
 
@@ -551,10 +563,14 @@ ifcapable threadsafe {
     sqlite3_shutdown
     install_mutex_counters 1
     set ::disable_mutex_try 1
+    sqlite3_initialize
+    autoinstall_test_functions
   } -shutdown {
     catch {db close}
     sqlite3_shutdown
     install_mutex_counters 0
+    sqlite3_initialize
+    autoinstall_test_functions
   }
 }
 
@@ -615,87 +631,82 @@ run_tests "pcache0" -description {
   Alternative pcache implementation without random discard
 } -initialize {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 1 0 1
   sqlite3_initialize
   autoinstall_test_functions
 } -shutdown {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 0 0 0
   sqlite3_config_lookaside 100 500
   install_malloc_faultsim 1 
   sqlite3_initialize
+  autoinstall_test_functions
 } -include ${perm-alt-pcache-testset}
 
 run_tests "pcache10" -description {
   Alternative pcache implementation without 10% random discard
 } -initialize {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 1 50 1
   sqlite3_initialize
   autoinstall_test_functions
 } -shutdown {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 0 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 } -include ${perm-alt-pcache-testset}
 
 run_tests "pcache50" -description {
   Alternative pcache implementation without 50% random discard
 } -initialize {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 1 50 1
   sqlite3_initialize
   autoinstall_test_functions
 } -shutdown {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 0 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 } -include ${perm-alt-pcache-testset}
 
 run_tests "pcache90" -description {
   Alternative pcache implementation without 90% random discard
 } -initialize {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 1 50 1
   sqlite3_initialize
   autoinstall_test_functions
 } -shutdown {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 0 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 } -include ${perm-alt-pcache-testset}
 
 run_tests "pcache100" -description {
   Alternative pcache implementation that always discards when unpinning
 } -initialize {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 1 100 1
   sqlite3_initialize
   autoinstall_test_functions
 } -shutdown {
   catch {db close}
-  sqlite3_reset_auto_extension
   sqlite3_shutdown
   sqlite3_config_alt_pcache 0 0 0
   sqlite3_initialize
+  autoinstall_test_functions
 } -include ${perm-alt-pcache-testset}
 
 run_tests "journaltest" -description {
index 9264fd61d6f1a96699c8dc613e2d437dbb13085b..86d13ba4aee7d005c24a1979ac24c532707405ec 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements regression tests for SQLite library.  The
 # focus of this script is measuring executing speed.
 #
-# $Id: speed1.test,v 1.10 2008/10/15 11:43:55 danielk1977 Exp $
+# $Id: speed1.test,v 1.11 2009/04/09 01:23:49 drh Exp $
 #
 
 sqlite3_shutdown
@@ -293,4 +293,6 @@ speed_trial_summary speed1
 db close
 sqlite3_shutdown
 eval sqlite3_config_lookaside $old_lookaside
+sqlite3_initialize
+autoinstall_test_functions
 finish_test
index 721bfca63fa852e891f668477f345edbb2e0eeb7..915f1653541ec8628c6927ef7d75e1a6e595edbc 100644 (file)
@@ -13,7 +13,7 @@
 #
 # This is a copy of speed1.test modified to user prepared statements.
 #
-# $Id: speed1p.test,v 1.6 2008/10/15 11:43:55 danielk1977 Exp $
+# $Id: speed1p.test,v 1.7 2009/04/09 01:23:49 drh Exp $
 #
 
 sqlite3_shutdown
@@ -341,4 +341,6 @@ speed_trial_summary speed1
 db close
 sqlite3_shutdown
 eval sqlite3_config_lookaside $old_lookaside
+sqlite3_initialize
+autoinstall_test_functions
 finish_test
index 27d613481ae768e0947a77e9d2a1b775988ef757..d8047a5f869cffc0e0d3de71ff1788ab3f346aba 100644 (file)
@@ -11,7 +11,7 @@
 # This file implements some common TCL routines used for regression
 # testing the SQLite library
 #
-# $Id: tester.tcl,v 1.142 2009/04/06 17:50:03 danielk1977 Exp $
+# $Id: tester.tcl,v 1.143 2009/04/09 01:23:49 drh Exp $
 
 #
 # What for user input before continuing.  This gives an opportunity
@@ -132,6 +132,7 @@ if {![info exists nTest]} {
   sqlite3_shutdown 
   install_malloc_faultsim 1 
   sqlite3_initialize
+  autoinstall_test_functions
   if {[info exists tester_do_binarylog]} {
     sqlite3_instvfs binarylog -default binarylog ostrace.bin
     sqlite3_instvfs marker binarylog "$argv0 $argv"
index dbf67e91871dce7054fc30ab9913a890ae02b5ab..8df0419c65abd7bbe2fd717bd164eadbaa64a88e 100644 (file)
@@ -15,7 +15,7 @@
 # that contain headers with nRec==0 that are followed by additional
 # valid headers.
 #
-# $Id: tkt2565.test,v 1.1 2009/01/08 15:24:02 drh Exp $
+# $Id: tkt2565.test,v 1.2 2009/04/09 01:23:49 drh Exp $
 
 set testdir [file dirname $argv0]
 source $testdir/tester.tcl
@@ -86,5 +86,7 @@ do_test tkt2565-1.X {
 #
 sqlite3_shutdown
 sqlite3_config_alt_pcache 0
+sqlite3_initialize
+autoinstall_test_functions
 
 finish_test