From: stephan Date: Wed, 23 Aug 2023 17:15:48 +0000 (+0000) Subject: Remove unnecessary jclass-type struct members. X-Git-Tag: version-3.44.0~305^2~3 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=1c3bf8a3e15fc6dcdfdb508f67c8e747b2621014;p=thirdparty%2Fsqlite.git Remove unnecessary jclass-type struct members. FossilOrigin-Name: d67255f7251cc5d1d27d77d4c84ff216e2da71202db989718189a6b4beff1cd0 --- diff --git a/ext/jni/src/c/sqlite3-jni.c b/ext/jni/src/c/sqlite3-jni.c index 93c5d5f1d2..494e64a3f6 100644 --- a/ext/jni/src/c/sqlite3-jni.c +++ b/ext/jni/src/c/sqlite3-jni.c @@ -356,7 +356,7 @@ struct S3JniNphClass { ** NativePointerHolder subclass represented by ** zClassName */; volatile jmethodID midCtor /* klazz's no-arg constructor. Used by - ** new_NativePointerHolder_object(). */; + ** new_NativePointerHolder_object(). */; volatile jfieldID fidValue /* NativePointerHolder.nativePointer or ** OutputPointer.T.value */; volatile jfieldID fidAggCtx /* sqlite3_context::aggregateContext. Used only @@ -369,12 +369,6 @@ struct S3JniHook{ jobject jObj /* global ref to Java instance */; jmethodID midCallback /* callback method. Signature depends on ** jObj's type */; - jclass klazz /* global ref to jObj's class. Only needed - ** by hooks which have an xDestroy() method. - ** We can probably eliminate this and simply - ** do the class lookup at the same - ** (deferred) time we do the xDestroy() - ** lookup. */; }; /* @@ -533,7 +527,6 @@ struct S3JniGlobalType { volatile jobject jFtsExt /* Global ref to Java singleton for the Fts5ExtensionApi instance. */; struct { - volatile jclass klazz /* Global ref to the Fts5Phrase iter class */; jfieldID fidA /* Fts5Phrase::a member */; jfieldID fidB /* Fts5Phrase::b member */; } jPhraseIter; @@ -860,6 +853,7 @@ static char * s3jni_exception_error_msg(JNIEnv * const env, jthrowable jx ){ char * zMsg; jclass const klazz = (*env)->GetObjectClass(env, jx); mid = (*env)->GetMethodID(env, klazz, "toString", "()Ljava/lang/String;"); + UNREF_L(klazz); IFTHREW{ EXCEPTION_REPORT; EXCEPTION_CLEAR; @@ -905,20 +899,18 @@ static int s3jni_db_exception(JNIEnv * const env, S3JniDb * const ps, } /* -** Extracts the (void xDestroy()) method from the given jclass and -** applies it to jobj. If jObj is NULL, this is a no-op. If klazz is -** NULL then it's derived from jobj. The lack of an xDestroy() method -** is silently ignored and any exceptions thrown by xDestroy() trigger -** a warning to stdout or stderr and then the exception is suppressed. +** Extracts the (void xDestroy()) method from jObj and applies it to +** jObj. If jObj is NULL, this is a no-op. The lack of an xDestroy() +** method is silently ignored and any exceptions thrown by xDestroy() +** trigger a warning to stdout or stderr and then the exception is +** suppressed. */ -static void s3jni_call_xDestroy(JNIEnv * const env, jobject jObj, jclass klazz){ +static void s3jni_call_xDestroy(JNIEnv * const env, jobject jObj){ if(jObj){ - jmethodID method; - if(!klazz){ - klazz = (*env)->GetObjectClass(env, jObj); - assert(klazz); - } - method = (*env)->GetMethodID(env, klazz, "xDestroy", "()V"); + jclass const klazz = (*env)->GetObjectClass(env, jObj); + jmethodID method = (*env)->GetMethodID(env, klazz, "xDestroy", "()V"); + + UNREF_L(klazz); if(method){ s3jni_incr( &SJG.metrics.nDestroy ); (*env)->CallVoidMethod(env, jObj, method); @@ -927,6 +919,7 @@ static void s3jni_call_xDestroy(JNIEnv * const env, jobject jObj, jclass klazz){ EXCEPTION_CLEAR; } }else{ + /* Non-fatal. */ EXCEPTION_CLEAR; } } @@ -934,17 +927,16 @@ static void s3jni_call_xDestroy(JNIEnv * const env, jobject jObj, jclass klazz){ /* ** Removes any Java references from s and clears its state. If -** doXDestroy is true and s->klazz and s->jObj are not NULL, s->jObj's +** doXDestroy is true and s->jObj is not NULL, s->jObj's ** s is passed to s3jni_call_xDestroy() before any references are ** cleared. It is legal to call this when the object has no Java ** references. */ static void S3JniHook_unref(JNIEnv * const env, S3JniHook * const s, int doXDestroy){ - if(doXDestroy && s->klazz && s->jObj){ - s3jni_call_xDestroy(env, s->jObj, s->klazz); + if(doXDestroy && s->jObj){ + s3jni_call_xDestroy(env, s->jObj); } UNREF_G(s->jObj); - UNREF_G(s->klazz); memset(s, 0, sizeof(*s)); } @@ -1198,16 +1190,12 @@ static void S3JniAutoExtension_clear(JNIEnv * const env, static int S3JniAutoExtension_init(JNIEnv *const env, S3JniAutoExtension * const ax, jobject const jAutoExt){ - jclass klazz; - klazz = (*env)->GetObjectClass(env, jAutoExt); - if(!klazz){ - S3JniAutoExtension_clear(env, ax); - return SQLITE_ERROR; - } + jclass const klazz = (*env)->GetObjectClass(env, jAutoExt); + ax->midFunc = (*env)->GetMethodID(env, klazz, "xEntryPoint", "(Lorg/sqlite/jni/sqlite3;)I"); - EXCEPTION_WARN_IGNORE; UNREF_L(klazz); + EXCEPTION_WARN_IGNORE; if(!ax->midFunc){ MARKER(("Error getting xEntryPoint(sqlite3) from AutoExtension object.")); S3JniAutoExtension_clear(env, ax); @@ -1245,8 +1233,7 @@ static int udf_setAggregateContext(JNIEnv * env, jobject jCx, if(!pNC->fidAggCtx){ MUTEX_NPH_ENTER; if(!pNC->fidAggCtx){ - pNC->fidAggCtx = (*env)->GetFieldID(env, pNC->klazz, - "aggregateContext", "J"); + pNC->fidAggCtx = (*env)->GetFieldID(env, pNC->klazz, "aggregateContext", "J"); EXCEPTION_IS_FATAL("Cannot get sqlite3_contex.aggregateContext member."); } MUTEX_NPH_LEAVE; @@ -1540,7 +1527,6 @@ typedef void (*udf_xFinal_f)(sqlite3_context*); typedef struct S3JniUdf S3JniUdf; struct S3JniUdf { jobject jObj /* SQLFunction instance */; - jclass klazz /* jObj's class */; char * zFuncName /* Only for error reporting and debug logging */; enum UDFType type; /** Method IDs for the various UDF methods. */ @@ -1558,11 +1544,12 @@ static S3JniUdf * S3JniUdf_alloc(JNIEnv * const env, jobject jObj){ "(Lorg/sqlite/jni/sqlite3_context;[Lorg/sqlite/jni/sqlite3_value;)V"; const char * zFV = /* signature for xFinal, xValue */ "(Lorg/sqlite/jni/sqlite3_context;)V"; + jclass const klazz = (*env)->GetObjectClass(env, jObj); + memset(s, 0, sizeof(S3JniUdf)); s->jObj = REF_G(jObj); - s->klazz = REF_G((*env)->GetObjectClass(env, jObj)); #define FGET(FuncName,FuncType,Field) \ - s->Field = (*env)->GetMethodID(env, s->klazz, FuncName, FuncType); \ + s->Field = (*env)->GetMethodID(env, klazz, FuncName, FuncType); \ if(!s->Field) (*env)->ExceptionClear(env) FGET("xFunc", zFSI, jmidxFunc); FGET("xStep", zFSI, jmidxStep); @@ -1570,6 +1557,7 @@ static S3JniUdf * S3JniUdf_alloc(JNIEnv * const env, jobject jObj){ FGET("xValue", zFV, jmidxValue); FGET("xInverse", zFSI, jmidxInverse); #undef FGET + UNREF_L(klazz); if(s->jmidxFunc) s->type = UDF_SCALAR; else if(s->jmidxStep && s->jmidxFinal){ s->type = s->jmidxValue ? UDF_WINDOW : UDF_AGGREGATE; @@ -1584,9 +1572,8 @@ static void S3JniUdf_free(S3JniUdf * s){ LocalJniGetEnv; if(env){ //MARKER(("UDF cleanup: %s\n", s->zFuncName)); - s3jni_call_xDestroy(env, s->jObj, s->klazz); + s3jni_call_xDestroy(env, s->jObj); UNREF_G(s->jObj); - UNREF_G(s->klazz); } sqlite3_free(s->zFuncName); sqlite3_free(s); @@ -2024,10 +2011,12 @@ JDECL(jint,1busy_1handler)(JENV_CSELF, jobject jDb, jobject jBusy){ /* Same object - this is a no-op. */ return 0; } + jclass klazz; S3JniHook_unref(env, pHook, 1); pHook->jObj = REF_G(jBusy); - pHook->klazz = REF_G((*env)->GetObjectClass(env, jBusy)); - pHook->midCallback = (*env)->GetMethodID(env, pHook->klazz, "xCallback", "(I)I"); + klazz = (*env)->GetObjectClass(env, jBusy); + pHook->midCallback = (*env)->GetMethodID(env, klazz, "xCallback", "(I)I"); + UNREF_L(klazz); IFTHREW { S3JniHook_unref(env, pHook, 0); rc = SQLITE_ERROR; @@ -2157,6 +2146,7 @@ JDECL(jint,1collation_1needed)(JENV_CSELF, jobject jDb, jobject jHook){ klazz = (*env)->GetObjectClass(env, jHook); xCallback = (*env)->GetMethodID(env, klazz, "xCollationNeeded", "(Lorg/sqlite/jni/sqlite3;ILjava/lang/String;)I"); + UNREF_L(klazz); IFTHREW { rc = s3jni_db_exception(env, ps, SQLITE_MISUSE, "Cannot not find matching callback on " @@ -2275,6 +2265,7 @@ static jobject s3jni_commit_rollback_hook(int isCommit, JNIEnv * const env, xCallback = (*env)->GetMethodID(env, klazz, isCommit ? "xCommitHook" : "xRollbackHook", isCommit ? "()I" : "()V"); + UNREF_L(klazz); IFTHREW { EXCEPTION_REPORT; EXCEPTION_CLEAR; @@ -2371,6 +2362,7 @@ JDECL(jint,1config__Lorg_sqlite_jni_SQLLog_2)(JENV_CSELF, jobject jLog){ S3JniHook tmpHook; S3JniHook * const hook = &tmpHook; S3JniHook * const hookOld = & SJG.hooks.sqllog; + jclass klazz; int rc = 0; if( !jLog ){ S3JniHook_unref(env, hookOld, 0); @@ -2379,11 +2371,12 @@ JDECL(jint,1config__Lorg_sqlite_jni_SQLLog_2)(JENV_CSELF, jobject jLog){ if( hookOld->jObj && (*env)->IsSameObject(env, jLog, hookOld->jObj) ){ return 0; } - hook->klazz = REF_G( (*env)->GetObjectClass(env, jLog) ); - hook->midCallback = (*env)->GetMethodID(env, hook->klazz, "xSqllog", + klazz = (*env)->GetObjectClass(env, jLog); + hook->midCallback = (*env)->GetMethodID(env, klazz, "xSqllog", "(Lorg/sqlite/jni/sqlite3;" "Ljava/lang/String;" "I)V"); + UNREF_L(klazz); if( !hook->midCallback ){ EXCEPTION_WARN_IGNORE; S3JniHook_unref(env, hook, 0); @@ -2423,8 +2416,9 @@ JDECL(jint,1create_1collation)(JENV_CSELF, jobject jDb, klazz = (*env)->GetObjectClass(env, oCollation); pHook->midCallback = (*env)->GetMethodID(env, klazz, "xCompare", "([B[B)I"); + UNREF_L(klazz); IFTHREW{ - EXCEPTION_REPORT; + UNREF_L(klazz); return s3jni_db_error(ps->pDb, SQLITE_ERROR, "Could not get xCompare() method for object."); } @@ -2435,7 +2429,6 @@ JDECL(jint,1create_1collation)(JENV_CSELF, jobject jDb, JSTR_RELEASE(name, zName); if( 0==rc ){ pHook->jObj = REF_G(oCollation); - pHook->klazz = REF_G(klazz); }else{ S3JniHook_unref(env, pHook, 1); } @@ -3000,6 +2993,7 @@ static jobject s3jni_updatepre_hook(JNIEnv * env, int isPre, jobject jDb, jobjec "JJ)V") : (*env)->GetMethodID(env, klazz, "xUpdateHook", "(ILjava/lang/String;Ljava/lang/String;J)V"); + UNREF_L(klazz); IFTHREW { EXCEPTION_CLEAR; s3jni_db_error(ps->pDb, SQLITE_ERROR, @@ -3094,6 +3088,7 @@ JDECL(void,1progress_1handler)(JENV_CSELF,jobject jDb, jint n, jobject jProgress } klazz = (*env)->GetObjectClass(env, jProgress); xCallback = (*env)->GetMethodID(env, klazz, "xCallback", "()I"); + UNREF_L(klazz); IFTHREW { EXCEPTION_CLEAR; s3jni_db_error(ps->pDb, SQLITE_ERROR, @@ -3351,6 +3346,7 @@ JDECL(jint,1set_1authorizer)(JENV_CSELF,jobject jDb, jobject jHook){ return (jint)sqlite3_set_authorizer( ps->pDb, 0, 0 ); }else{ int rc = 0; + jclass klazz; if( pHook->jObj ){ if( (*env)->IsSameObject(env, pHook->jObj, jHook) ){ /* Same object - this is a no-op. */ @@ -3359,8 +3355,8 @@ JDECL(jint,1set_1authorizer)(JENV_CSELF,jobject jDb, jobject jHook){ S3JniHook_unref(env, pHook, 0); } pHook->jObj = REF_G(jHook); - pHook->klazz = REF_G((*env)->GetObjectClass(env, jHook)); - pHook->midCallback = (*env)->GetMethodID(env, pHook->klazz, + klazz = (*env)->GetObjectClass(env, jHook); + pHook->midCallback = (*env)->GetMethodID(env, klazz, "xAuth", "(I" "Ljava/lang/String;" @@ -3368,6 +3364,7 @@ JDECL(jint,1set_1authorizer)(JENV_CSELF,jobject jDb, jobject jHook){ "Ljava/lang/String;" "Ljava/lang/String;" ")I"); + UNREF_L(klazz); IFTHREW { S3JniHook_unref(env, pHook, 0); return s3jni_db_error(ps->pDb, SQLITE_ERROR, @@ -3536,6 +3533,7 @@ JDECL(jint,1trace_1v2)(JENV_CSELF,jobject jDb, jint traceMask, jobject jTracer){ klazz = (*env)->GetObjectClass(env, jTracer); ps->hooks.trace.midCallback = (*env)->GetMethodID(env, klazz, "xCallback", "(ILjava/lang/Object;Ljava/lang/Object;)I"); + UNREF_L(klazz); IFTHREW { EXCEPTION_CLEAR; return s3jni_db_error(ps->pDb, SQLITE_ERROR, @@ -3723,7 +3721,6 @@ JDECL(void,1do_1something_1for_1developer)(JENV_CSELF){ */ typedef struct { jobject jObj /* functor instance */; - jclass klazz /* jObj's class */; jobject jUserData /* 2nd arg to JNI binding of xCreateFunction(), ostensibly the 3rd arg to the lib-level xCreateFunction(), except @@ -3737,9 +3734,8 @@ static void Fts5JniAux_free(Fts5JniAux * const s){ LocalJniGetEnv; if(env){ /*MARKER(("FTS5 aux function cleanup: %s\n", s->zFuncName));*/ - s3jni_call_xDestroy(env, s->jObj, s->klazz); + s3jni_call_xDestroy(env, s->jObj); UNREF_G(s->jObj); - UNREF_G(s->klazz); UNREF_G(s->jUserData); } sqlite3_free(s->zFuncName); @@ -3753,14 +3749,16 @@ static void Fts5JniAux_xDestroy(void *p){ static Fts5JniAux * Fts5JniAux_alloc(JNIEnv * const env, jobject jObj){ Fts5JniAux * s = sqlite3_malloc(sizeof(Fts5JniAux)); if(s){ + jclass klazz; memset(s, 0, sizeof(Fts5JniAux)); s->jObj = REF_G(jObj); - s->klazz = REF_G((*env)->GetObjectClass(env, jObj)); - s->jmid = (*env)->GetMethodID(env, s->klazz, "xFunction", + klazz = (*env)->GetObjectClass(env, jObj); + s->jmid = (*env)->GetMethodID(env, klazz, "xFunction", "(Lorg/sqlite/jni/Fts5ExtensionApi;" "Lorg/sqlite/jni/Fts5Context;" "Lorg/sqlite/jni/sqlite3_context;" "[Lorg/sqlite/jni/sqlite3_value;)V"); + UNREF_L(klazz); IFTHREW{ EXCEPTION_REPORT; EXCEPTION_CLEAR; @@ -3966,7 +3964,7 @@ static void S3JniFts5AuxData_xDestroy(void *x){ S3JniFts5AuxData * const p = x; if(p->jObj){ LocalJniGetEnv; - s3jni_call_xDestroy(env, p->jObj, 0); + s3jni_call_xDestroy(env, p->jObj); UNREF_G(p->jObj); } sqlite3_free(x); @@ -4023,7 +4021,7 @@ static void s3jni_phraseIter_NToJ(JNIEnv *const env, Fts5PhraseIter const * const pSrc, jobject jIter){ S3JniGlobalType * const g = &S3JniGlobal; - assert(g->fts5.jPhraseIter.klazz); + assert(g->fts5.jPhraseIter.fidA); (*env)->SetLongField(env, jIter, g->fts5.jPhraseIter.fidA, (jlong)pSrc->a); EXCEPTION_IS_FATAL("Cannot set Fts5PhraseIter.a field."); (*env)->SetLongField(env, jIter, g->fts5.jPhraseIter.fidB, (jlong)pSrc->b); @@ -4034,7 +4032,7 @@ static void s3jni_phraseIter_NToJ(JNIEnv *const env, static void s3jni_phraseIter_JToN(JNIEnv *const env, jobject jIter, Fts5PhraseIter * const pDest){ S3JniGlobalType * const g = &S3JniGlobal; - assert(g->fts5.jPhraseIter.klazz); + assert(g->fts5.jPhraseIter.fidA); pDest->a = (const unsigned char *)(*env)->GetLongField(env, jIter, g->fts5.jPhraseIter.fidA); EXCEPTION_IS_FATAL("Cannot get Fts5PhraseIter.a field."); @@ -4078,7 +4076,6 @@ JDECLFtsXA(void,xPhraseNext)(JENV_OSELF,jobject jCtx, jobject jIter, Fts5ExtDecl; Fts5PhraseIter iter; int iCol = 0, iOff = 0; - if(!SJG.fts5.jPhraseIter.klazz) return /*SQLITE_MISUSE*/; s3jni_phraseIter_JToN(env, jIter, &iter); fext->xPhraseNext(PtrGet_Fts5Context(jCtx), &iter, &iCol, &iOff); OutputPointer_set_Int32(env, jOutCol, iCol); @@ -4091,7 +4088,6 @@ JDECLFtsXA(void,xPhraseNextColumn)(JENV_OSELF,jobject jCtx, jobject jIter, Fts5ExtDecl; Fts5PhraseIter iter; int iCol = 0; - if(!SJG.fts5.jPhraseIter.klazz) return /*SQLITE_MISUSE*/; s3jni_phraseIter_JToN(env, jIter, &iter); fext->xPhraseNextColumn(PtrGet_Fts5Context(jCtx), &iter, &iCol); OutputPointer_set_Int32(env, jOutCol, iCol); @@ -4151,6 +4147,7 @@ JDECLFtsXA(jint,xQueryPhrase)(JENV_OSELF,jobject jFcx, jint iPhrase, s.midCallback = (*env)->GetMethodID(env, klazz, "xCallback", "(Lorg.sqlite.jni.Fts5ExtensionApi;" "Lorg.sqlite.jni.Fts5Context;)I"); + UNREF_L(klazz); EXCEPTION_IS_FATAL("Could not extract xQueryPhraseCallback.xCallback method."); return (jint)fext->xQueryPhrase(PtrGet_Fts5Context(jFcx), iPhrase, &s, s3jni_xQueryPhrase); @@ -4179,7 +4176,7 @@ JDECLFtsXA(int,xSetAuxdata)(JENV_OSELF,jobject jCtx, jobject jAux){ if(jAux){ /* Emulate how xSetAuxdata() behaves when it cannot alloc ** its auxdata wrapper. */ - s3jni_call_xDestroy(env, jAux, 0); + s3jni_call_xDestroy(env, jAux); } return SQLITE_NOMEM; } @@ -4237,6 +4234,7 @@ static jint s3jni_fts5_xTokenize(JENV_OSELF, S3NphRef const *pRef, s.jFcx = jFcx; s.fext = fext; s.midCallback = (*env)->GetMethodID(env, klazz, "xToken", "(I[BII)I"); + UNREF_L(klazz); IFTHREW { EXCEPTION_REPORT; EXCEPTION_CLEAR; @@ -4606,16 +4604,17 @@ Java_org_sqlite_jni_SQLite3Jni_init(JENV_CSELF){ SJG.g.oCharsetUtf8 = REF_G((*env)->GetStaticObjectField(env, klazz, fUtf8)); EXCEPTION_IS_FATAL("Error getting reference to StandardCharsets.UTF_8."); + UNREF_L(klazz); } #ifdef SQLITE_ENABLE_FTS5 klazz = (*env)->FindClass(env, "org/sqlite/jni/Fts5PhraseIter"); EXCEPTION_IS_FATAL("Error getting reference to org.sqlite.jni.Fts5PhraseIter."); - SJG.fts5.jPhraseIter.klazz = REF_G(klazz); SJG.fts5.jPhraseIter.fidA = (*env)->GetFieldID(env, klazz, "a", "J"); EXCEPTION_IS_FATAL("Cannot get Fts5PhraseIter.a field."); - SJG.fts5.jPhraseIter.fidB = (*env)->GetFieldID(env, klazz, "a", "J"); + SJG.fts5.jPhraseIter.fidB = (*env)->GetFieldID(env, klazz, "b", "J"); EXCEPTION_IS_FATAL("Cannot get Fts5PhraseIter.b field."); + UNREF_L(klazz); #endif SJG.envCache.mutex = sqlite3_mutex_alloc(SQLITE_MUTEX_FAST); diff --git a/manifest b/manifest index 58f3c72d7e..f6449b99b7 100644 --- a/manifest +++ b/manifest @@ -1,5 +1,5 @@ -C Add\sa\snote\sto\sthe\sJNI\sREADME\sexplaining\swhy\sthe\sJava\sAPI\shas\scallback\snames\slike\sxFunc()\sand\sxPreUpdate(). -D 2023-08-23T13:36:27.524 +C Remove\sunnecessary\sjclass-type\sstruct\smembers. +D 2023-08-23T17:15:48.658 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724 @@ -235,7 +235,7 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3 F ext/jni/GNUmakefile 14b7c3abd1ae8693203b08b0e06bb359f8924ad2243f15953e9c6e456ae317b5 F ext/jni/README.md 1693e865d366f5ebaa756732ea0d4b786515caf3cfbcd4dcb8758274373913b0 F ext/jni/jar-dist.make 9a03d10dbb5a74c724bfec4b76fd9e4c9865cbbc858d731cb48f38ac897d73a3 -F ext/jni/src/c/sqlite3-jni.c 852c4812c9a3663d871cb334eaa60eb6fc22d67da47d4ff3868fdbfd6ebedb3a +F ext/jni/src/c/sqlite3-jni.c adb773d104abe72e93364f21c52d455f361692f3cd7dd6d9fdab6110b8b4f3ee F ext/jni/src/c/sqlite3-jni.h c5cb0348efe4e5f3d125a240e2437e8475de14a586c2f859e2acdcde4116244d F ext/jni/src/org/sqlite/jni/Authorizer.java 1308988f7f40579ea0e4deeaec3c6be971630566bd021c31367fe3f5140db892 F ext/jni/src/org/sqlite/jni/AutoExtension.java 3b62c915e45ce73f63343ca9195ec63592244d616a1908b7587bdd45de1b97dd @@ -2094,8 +2094,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 d0c425b5c1d3aac5ead18a501a3760b4506d68d373cb3be484247042cf2fa8d4 -R 2838b81803960048740e7919bfbbb667 +P 415447a310f6a7d06b4aa9ef51f110cf8e2ef9545c69cb5983c367c50fe641d2 +R fddefcd0dbe857a799e7e6b983a3459a U stephan -Z 6887128552106c38adfd2773e845a05f +Z b441a1d2bae36389c447acd3134d6be2 # Remove this line to create a well-formed Fossil manifest. diff --git a/manifest.uuid b/manifest.uuid index 69eb67759c..3df5deea50 100644 --- a/manifest.uuid +++ b/manifest.uuid @@ -1 +1 @@ -415447a310f6a7d06b4aa9ef51f110cf8e2ef9545c69cb5983c367c50fe641d2 \ No newline at end of file +d67255f7251cc5d1d27d77d4c84ff216e2da71202db989718189a6b4beff1cd0 \ No newline at end of file