]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Correct JNI binding of sqlite3_shutdown() to clean up all cached JNIEnv objects.
authorstephan <stephan@noemail.net>
Tue, 22 Aug 2023 17:51:57 +0000 (17:51 +0000)
committerstephan <stephan@noemail.net>
Tue, 22 Aug 2023 17:51:57 +0000 (17:51 +0000)
FossilOrigin-Name: 02e868690f97ca728b0f2dd018aa79a9d13c85dd85b164caa895d319ae8f3ff5

ext/jni/GNUmakefile
ext/jni/src/c/sqlite3-jni.c
ext/jni/src/org/sqlite/jni/Tester1.java
manifest
manifest.uuid

index de9204fd646ce2fa4265e2fc9bc183e70902e6a6..788c07206218765c392b1f4a6f44ebe5720096ed 100644 (file)
@@ -268,7 +268,7 @@ endif
 
 tester-ext: tester-local
 tester: tester-ext
-tests: test tester test-mt
+tests: test test-mt tester
 package.jar.in := $(abspath $(dir.src)/jar.in)
 CLEAN_FILES += $(package.jar.in)
 $(package.jar.in): $(MAKEFILE) $(CLASS_FILES.main)
index 8ae78ea3d81daf7945e07a1b63b209bd7f7216e6..fc96bdd38401be0a649d14d7c8623f46db20099a 100644 (file)
@@ -376,7 +376,7 @@ struct S3JniHook{
 /*
 ** Per-(sqlite3*) state for various JNI bindings.  This state is
 ** allocated as needed, cleaned up in sqlite3_close(_v2)(), and
-** recycled when possible. It is freed during sqlite3_shutdown().
+** recycled when possible.
 */
 typedef struct S3JniDb S3JniDb;
 struct S3JniDb {
@@ -1136,19 +1136,6 @@ static S3JniDb * S3JniDb_alloc(JNIEnv * const env, sqlite3 *pDb,
   return rv;
 }
 
-#if 0
-static void S3JniDb_dump(S3JniDb *s){
-  MARKER(("S3JniDb->env @ %p\n", s->env));
-  MARKER(("S3JniDb->pDb @ %p\n", s->pDb));
-  MARKER(("S3JniDb->trace.jObj @ %p\n", s->trace.jObj));
-  MARKER(("S3JniDb->progress.jObj @ %p\n", s->progress.jObj));
-  MARKER(("S3JniDb->commitHook.jObj @ %p\n", s->commitHook.jObj));
-  MARKER(("S3JniDb->rollbackHook.jObj @ %p\n", s->rollbackHook.jObj));
-  MARKER(("S3JniDb->busyHandler.jObj @ %p\n", s->busyHandler.jObj));
-  MARKER(("S3JniDb->env @ %p\n", s->env));
-}
-#endif
-
 /**
    Returns the S3JniDb object for the given db.
 
@@ -3079,7 +3066,7 @@ JDECL(jint,1shutdown)(JENV_CSELF){
   s3jni_reset_auto_extension(env);
   MUTEX_ENV_ENTER;
   while( SJG.envCache.aHead ){
-    S3JniGlobal_env_uncache( env );//SJG.envCache.aHead->env );
+    S3JniGlobal_env_uncache( SJG.envCache.aHead->env );
   }
   MUTEX_ENV_LEAVE;
   /* Do not clear S3JniGlobal.jvm: it's legal to call
index fe8bc542c67be41aea4a9b016b9b8148b9c867f7..9677ca57d178f3cae67bc41a2b26393408aedc2a 100644 (file)
@@ -1270,6 +1270,7 @@ public class Tester1 implements Runnable {
     if( doSomethingForDev ){
       sqlite3_do_something_for_developer();
     }
+    sqlite3_shutdown();
     int nMethods = 0;
     int nNatives = 0;
     final java.lang.reflect.Method[] declaredMethods =
index 94ab0dbcd7e1bf8640408671646c2b8d3da87aec..39fe198d941a3be2513d76fad952d4bdc61724bf 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C JNI\sinternal\scleanups\sand\scorrect\stwo\sleaked\sdb\shandles\sin\stest\scode.
-D 2023-08-22T17:36:59.339
+C Correct\sJNI\sbinding\sof\ssqlite3_shutdown()\sto\sclean\sup\sall\scached\sJNIEnv\sobjects.
+D 2023-08-22T17:51:57.423
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -232,10 +232,10 @@ F ext/fts5/tool/showfts5.tcl d54da0e067306663e2d5d523965ca487698e722c
 F ext/icu/README.txt 7ab7ced8ae78e3a645b57e78570ff589d4c672b71370f5aa9e1cd7024f400fc9
 F ext/icu/icu.c c074519b46baa484bb5396c7e01e051034da8884bad1a1cb7f09bbe6be3f0282
 F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a32075a8
-F ext/jni/GNUmakefile 30f0926a69edbd9e9932283ec8e4cea02b785f373395f2093dbbc6d65866a196
+F ext/jni/GNUmakefile 1ccd09095447709ffd7a4f32514fd586512491c6bed06d009bab4294b451ed62
 F ext/jni/README.md 975b35173debbbf3a4ab7166e14d2ffa2bacff9b6850414f09cc919805e81ba4
 F ext/jni/jar-dist.make 9a03d10dbb5a74c724bfec4b76fd9e4c9865cbbc858d731cb48f38ac897d73a3
-F ext/jni/src/c/sqlite3-jni.c b54056176060ef68dba31baaee43ad90a8ac3d4e7a477224377026110bb213ac
+F ext/jni/src/c/sqlite3-jni.c fb2ca8b6f846632b3432096d5533bef8251965dd5ed9f490441293da641a3fb5
 F ext/jni/src/c/sqlite3-jni.h 8b0ab1a3f0f92b75d4ff50db4a88b66a137cfb561268eb15bb3993ed174dbb74
 F ext/jni/src/org/sqlite/jni/Authorizer.java 1308988f7f40579ea0e4deeaec3c6be971630566bd021c31367fe3f5140db892
 F ext/jni/src/org/sqlite/jni/AutoExtension.java 3b62c915e45ce73f63343ca9195ec63592244d616a1908b7587bdd45de1b97dd
@@ -256,7 +256,7 @@ F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7c
 F ext/jni/src/org/sqlite/jni/RollbackHook.java b04c8abcc6ade44a8a57129e33765793f69df0ba909e49ba18d73f4268d92564
 F ext/jni/src/org/sqlite/jni/SQLFunction.java 8c1ad92c35bcc1b2f7256cf6e229b31340ed6d1a404d487f0a9adb28ba7fc332
 F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 0eea21f1015704e495b1a47aa9c7c90d081f51777981fe3f07760486aed092d8
-F ext/jni/src/org/sqlite/jni/Tester1.java b6be63a8e80c7362073f2a799719315a1459d1eff97cebb944b1309522758de2
+F ext/jni/src/org/sqlite/jni/Tester1.java e83a5635878cf73b463014b5137ce5c057ee9c5f6d67fbb40496894552785f46
 F ext/jni/src/org/sqlite/jni/TesterFts5.java c729d5b3cb91888b7e2a3a3ef450852f184697df78721574f6c0bf9043e4b84c
 F ext/jni/src/org/sqlite/jni/Tracer.java a5cece9f947b0af27669b8baec300b6dd7ff859c3e6a6e4a1bd8b50f9714775d
 F ext/jni/src/org/sqlite/jni/UpdateHook.java e58645a1727f8a9bbe72dc072ec5b40d9f9362cb0aa24acfe93f49ff56a9016d
@@ -2092,8 +2092,8 @@ F vsixtest/vsixtest.tcl 6a9a6ab600c25a91a7acc6293828957a386a8a93
 F vsixtest/vsixtest.vcxproj.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
 F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
 F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
-P e209f56a9745695aadc04418c7bebe62b79e38e5aee26c3248a30f73bfa460c2
-R 187f43ad9bb697fc679503d683587e56
+P f927a30b5bba35991f472084ebaf02779e84c343a4e84f0efb3df7679ff212f8
+R fd18badbeb7e1f743addadd7405d6449
 U stephan
-Z 1a62043be3662d747eb273c051b3d9b0
+Z 7d01e74d30abc2fec1f43939a768f2c1
 # Remove this line to create a well-formed Fossil manifest.
index 296aadaa8736a15ac763c1cdc05dfc503c7d9035..3da3391a9efcd948e35daaf3149ade1f358ef38f 100644 (file)
@@ -1 +1 @@
-f927a30b5bba35991f472084ebaf02779e84c343a4e84f0efb3df7679ff212f8
\ No newline at end of file
+02e868690f97ca728b0f2dd018aa79a9d13c85dd85b164caa895d319ae8f3ff5
\ No newline at end of file