]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Eliminate a superfluous JNI-internal middle-man class.
authorstephan <stephan@noemail.net>
Sat, 26 Aug 2023 21:13:57 +0000 (21:13 +0000)
committerstephan <stephan@noemail.net>
Sat, 26 Aug 2023 21:13:57 +0000 (21:13 +0000)
FossilOrigin-Name: daede0f801f59d6501a863c4688e4635b34171e98b56b8ab4432c779113f1997

ext/jni/src/c/sqlite3-jni.c
manifest
manifest.uuid

index 0c290f9e23463dc2614618845530e403a1f26c68..353ea552d508a90cd1127ce735e30e7e907b28ad 100644 (file)
@@ -1518,44 +1518,17 @@ static void CollationState_xDestroy(void *pArg){
   S3JniMutex_S3JniDb_leave;
 }
 
-/*
-** State for sqlite3_result_java_object() and
-** sqlite3_value_java_object().
-**
-** TODO: this middle-man struct is no longer necessary. Conider
-** removing it and passing around jObj itself instead. OTOH, we might
-** find more state to pack in here.
-*/
-typedef struct {
-  jobject jObj;
-} ResultJavaVal;
-
 /* For use with sqlite3_result/value_pointer() */
 #define ResultJavaValuePtrStr "org.sqlite.jni.ResultJavaVal"
 
 /*
-** Allocate a new ResultJavaVal and assign it a new global ref of
-** jObj.  Caller owns the returned object and must eventually pass it
-** to ResultJavaVal_finalizer().
-*/
-static ResultJavaVal * ResultJavaVal_alloc(JNIEnv * const env, jobject jObj){
-  ResultJavaVal * const rv = s3jni_malloc(env, sizeof(ResultJavaVal));
-  if( rv ){
-    rv->jObj = jObj ? S3JniRefGlobal(jObj) : 0;
-  }
-  return rv;
-}
-
-/*
-** If v is not NULL, it must point to a a ResultJavaVal object. Its
-** object reference is relinquished and v is freed.
+** If v is not NULL, it must be a jobject global reference. Its
+** reference is relinquished and v is freed.
 */
-static void ResultJavaVal_finalizer(void *v){
+static void ResultJavaValue_finalizer(void *v){
   if( v ){
-    ResultJavaVal * const rv = (ResultJavaVal*)v;
     S3JniDeclLocal_env;
-    S3JniUnrefGlobal(rv->jObj);
-    sqlite3_free(rv);
+    S3JniUnrefGlobal((jobject)v);
   }
 }
 
@@ -3585,10 +3558,10 @@ S3JniApi(sqlite3_result_java_object(),void,1result_1java_1object)(
   JniArgsEnvClass, jobject jpCx, jobject v
 ){
   if( v ){
-    ResultJavaVal * const rjv = ResultJavaVal_alloc(env, v);
+    jobject const rjv = S3JniRefGlobal(v);
     if( rjv ){
       sqlite3_result_pointer(PtrGet_sqlite3_context(jpCx), rjv,
-                             ResultJavaValuePtrStr, ResultJavaVal_finalizer);
+                             ResultJavaValuePtrStr, ResultJavaValue_finalizer);
     }else{
       sqlite3_result_error_nomem(PtrGet_sqlite3_context(jpCx));
     }
@@ -3974,9 +3947,8 @@ S3JniApi(sqlite3_value_int64(),jlong,1value_1int64)(
 S3JniApi(sqlite3_value_java_object(),jobject,1value_1java_1object)(
   JniArgsEnvClass, jobject jpSVal
 ){
-  ResultJavaVal * const rv = sqlite3_value_pointer(PtrGet_sqlite3_value(jpSVal),
-                                                   ResultJavaValuePtrStr);
-  return rv ? rv->jObj : NULL;
+  return sqlite3_value_pointer(PtrGet_sqlite3_value(jpSVal),
+                               ResultJavaValuePtrStr);
 }
 
 S3JniApi(sqlite3_value_text_utf8(),jbyteArray,1value_1text_1utf8)(
index a6bb095c8e70d3aa61df764a3192d878fbdb0c86..29c3be6debd7666a91a34959b61334d95dac7e06 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Whether\sor\snot\sOOM\sis\salways\sfatal\sin\sJNI\sis\snow\sa\scompile-time\soption.
-D 2023-08-26T21:02:50.002
+C Eliminate\sa\ssuperfluous\sJNI-internal\smiddle-man\sclass.
+D 2023-08-26T21:13:57.847
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -236,7 +236,7 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
 F ext/jni/GNUmakefile 4e60cdca419ac6783719da98379480b6f04d5d1b5fa1408c46fcb0c32565c571
 F ext/jni/README.md 1332b1fa27918bd5d9ca2d0d4f3ac3a6ab86b9e3699dc5bfe32904a027f3d2a9
 F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
-F ext/jni/src/c/sqlite3-jni.c d6665b309171af316f83a422b0a1c360f760493d9d8cfe239c8f38b639daac47
+F ext/jni/src/c/sqlite3-jni.c b5777fb1da4cd81bc91a051ebfa59ba28722536c4c98560350a7c219f9da265e
 F ext/jni/src/c/sqlite3-jni.h a410d05ca47a676b75ff7b8980e75ad604ea15f3c29965f88989703abc2eeaf6
 F ext/jni/src/org/sqlite/jni/AggregateFunction.java 0a5a74bea5ee12a99407e9432d0ca393525af912c2b0ca55c7ee5dbd019c00ef
 F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java c374bb76409cce7a0bdba94877706b59ac6127fa5d9e6af3e8058c99ce99c030
@@ -2103,8 +2103,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 4252f56f3d8574b7b43306440726daf3b5f5500d5d9105784b2f82753e7c71dd
-R 73a65c0a564c2b6325f39c30c9023371
+P 320a34c080d8bc1feae1578697923dfa7c4144b78de36f704c24cc4a4ce9d535
+R bd8a050119f034bd484ec7a8a853653c
 U stephan
-Z c1a9d88eb5b30bcb5f8055b2c7e2b244
+Z 713c3c8622f9cf1b7dfe5fb5695c9634
 # Remove this line to create a well-formed Fossil manifest.
index bdcc15bba55df3a00a4a2867cacbc7131d2d550d..a04046908a6df94aec922a42739222471c5b3319 100644 (file)
@@ -1 +1 @@
-320a34c080d8bc1feae1578697923dfa7c4144b78de36f704c24cc4a4ce9d535
\ No newline at end of file
+daede0f801f59d6501a863c4688e4635b34171e98b56b8ab4432c779113f1997
\ No newline at end of file