mirror of
https://github.com/sqlite/sqlite.git
synced 2025-08-05 15:55:57 +03:00
Eliminate a superfluous JNI-internal middle-man class.
FossilOrigin-Name: daede0f801f59d6501a863c4688e4635b34171e98b56b8ab4432c779113f1997
This commit is contained in:
@@ -1518,44 +1518,17 @@ static void CollationState_xDestroy(void *pArg){
|
|||||||
S3JniMutex_S3JniDb_leave;
|
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() */
|
/* For use with sqlite3_result/value_pointer() */
|
||||||
#define ResultJavaValuePtrStr "org.sqlite.jni.ResultJavaVal"
|
#define ResultJavaValuePtrStr "org.sqlite.jni.ResultJavaVal"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
** Allocate a new ResultJavaVal and assign it a new global ref of
|
** If v is not NULL, it must be a jobject global reference. Its
|
||||||
** jObj. Caller owns the returned object and must eventually pass it
|
** reference is relinquished and v is freed.
|
||||||
** to ResultJavaVal_finalizer().
|
|
||||||
*/
|
*/
|
||||||
static ResultJavaVal * ResultJavaVal_alloc(JNIEnv * const env, jobject jObj){
|
static void ResultJavaValue_finalizer(void *v){
|
||||||
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.
|
|
||||||
*/
|
|
||||||
static void ResultJavaVal_finalizer(void *v){
|
|
||||||
if( v ){
|
if( v ){
|
||||||
ResultJavaVal * const rv = (ResultJavaVal*)v;
|
|
||||||
S3JniDeclLocal_env;
|
S3JniDeclLocal_env;
|
||||||
S3JniUnrefGlobal(rv->jObj);
|
S3JniUnrefGlobal((jobject)v);
|
||||||
sqlite3_free(rv);
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -3585,10 +3558,10 @@ S3JniApi(sqlite3_result_java_object(),void,1result_1java_1object)(
|
|||||||
JniArgsEnvClass, jobject jpCx, jobject v
|
JniArgsEnvClass, jobject jpCx, jobject v
|
||||||
){
|
){
|
||||||
if( v ){
|
if( v ){
|
||||||
ResultJavaVal * const rjv = ResultJavaVal_alloc(env, v);
|
jobject const rjv = S3JniRefGlobal(v);
|
||||||
if( rjv ){
|
if( rjv ){
|
||||||
sqlite3_result_pointer(PtrGet_sqlite3_context(jpCx), rjv,
|
sqlite3_result_pointer(PtrGet_sqlite3_context(jpCx), rjv,
|
||||||
ResultJavaValuePtrStr, ResultJavaVal_finalizer);
|
ResultJavaValuePtrStr, ResultJavaValue_finalizer);
|
||||||
}else{
|
}else{
|
||||||
sqlite3_result_error_nomem(PtrGet_sqlite3_context(jpCx));
|
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)(
|
S3JniApi(sqlite3_value_java_object(),jobject,1value_1java_1object)(
|
||||||
JniArgsEnvClass, jobject jpSVal
|
JniArgsEnvClass, jobject jpSVal
|
||||||
){
|
){
|
||||||
ResultJavaVal * const rv = sqlite3_value_pointer(PtrGet_sqlite3_value(jpSVal),
|
return sqlite3_value_pointer(PtrGet_sqlite3_value(jpSVal),
|
||||||
ResultJavaValuePtrStr);
|
ResultJavaValuePtrStr);
|
||||||
return rv ? rv->jObj : NULL;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
S3JniApi(sqlite3_value_text_utf8(),jbyteArray,1value_1text_1utf8)(
|
S3JniApi(sqlite3_value_text_utf8(),jbyteArray,1value_1text_1utf8)(
|
||||||
|
12
manifest
12
manifest
@@ -1,5 +1,5 @@
|
|||||||
C Whether\sor\snot\sOOM\sis\salways\sfatal\sin\sJNI\sis\snow\sa\scompile-time\soption.
|
C Eliminate\sa\ssuperfluous\sJNI-internal\smiddle-man\sclass.
|
||||||
D 2023-08-26T21:02:50.002
|
D 2023-08-26T21:13:57.847
|
||||||
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
|
||||||
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
|
||||||
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
|
||||||
@@ -236,7 +236,7 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
|
|||||||
F ext/jni/GNUmakefile 4e60cdca419ac6783719da98379480b6f04d5d1b5fa1408c46fcb0c32565c571
|
F ext/jni/GNUmakefile 4e60cdca419ac6783719da98379480b6f04d5d1b5fa1408c46fcb0c32565c571
|
||||||
F ext/jni/README.md 1332b1fa27918bd5d9ca2d0d4f3ac3a6ab86b9e3699dc5bfe32904a027f3d2a9
|
F ext/jni/README.md 1332b1fa27918bd5d9ca2d0d4f3ac3a6ab86b9e3699dc5bfe32904a027f3d2a9
|
||||||
F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
|
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/c/sqlite3-jni.h a410d05ca47a676b75ff7b8980e75ad604ea15f3c29965f88989703abc2eeaf6
|
||||||
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 0a5a74bea5ee12a99407e9432d0ca393525af912c2b0ca55c7ee5dbd019c00ef
|
F ext/jni/src/org/sqlite/jni/AggregateFunction.java 0a5a74bea5ee12a99407e9432d0ca393525af912c2b0ca55c7ee5dbd019c00ef
|
||||||
F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java c374bb76409cce7a0bdba94877706b59ac6127fa5d9e6af3e8058c99ce99c030
|
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.data 2ed517e100c66dc455b492e1a33350c1b20fbcdc
|
||||||
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
F vsixtest/vsixtest.vcxproj.filters 37e51ffedcdb064aad6ff33b6148725226cd608e
|
||||||
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
F vsixtest/vsixtest_TemporaryKey.pfx e5b1b036facdb453873e7084e1cae9102ccc67a0
|
||||||
P 4252f56f3d8574b7b43306440726daf3b5f5500d5d9105784b2f82753e7c71dd
|
P 320a34c080d8bc1feae1578697923dfa7c4144b78de36f704c24cc4a4ce9d535
|
||||||
R 73a65c0a564c2b6325f39c30c9023371
|
R bd8a050119f034bd484ec7a8a853653c
|
||||||
U stephan
|
U stephan
|
||||||
Z c1a9d88eb5b30bcb5f8055b2c7e2b244
|
Z 713c3c8622f9cf1b7dfe5fb5695c9634
|
||||||
# Remove this line to create a well-formed Fossil manifest.
|
# Remove this line to create a well-formed Fossil manifest.
|
||||||
|
@@ -1 +1 @@
|
|||||||
320a34c080d8bc1feae1578697923dfa7c4144b78de36f704c24cc4a4ce9d535
|
daede0f801f59d6501a863c4688e4635b34171e98b56b8ab4432c779113f1997
|
Reference in New Issue
Block a user