]> git.ipfire.org Git - thirdparty/sqlite.git/commitdiff
Adapted JNI sqlite3_blob_...() and sqlite3_close...() to the new pointer-passing...
authorstephan <stephan@noemail.net>
Wed, 27 Sep 2023 14:41:49 +0000 (14:41 +0000)
committerstephan <stephan@noemail.net>
Wed, 27 Sep 2023 14:41:49 +0000 (14:41 +0000)
FossilOrigin-Name: 0b22c8ef93e5ccd45316099fb8575e27620158b1992c0c70fe0348cfc10147f8

ext/jni/src/c/sqlite3-jni.c
ext/jni/src/c/sqlite3-jni.h
ext/jni/src/org/sqlite/jni/SQLite3Jni.java
ext/jni/src/org/sqlite/jni/sqlite3.java
ext/jni/src/org/sqlite/jni/sqlite3_blob.java
ext/jni/src/org/sqlite/jni/sqlite3_stmt.java
manifest
manifest.uuid

index e1d64f128d7bba972f225398dc0a34ad43c28be6..da457174a4930db1e938a3f7ca33d5157f056e50 100644 (file)
@@ -1454,6 +1454,7 @@ static void * NativePointerHolder__get(JNIEnv * env, jobject jNph,
 #define S3JniLongPtr_T(T,JLongPtr) (T*)(JLongPtr)
 #define S3JniLongPtr_sqlite3(JLongPtr) S3JniLongPtr_T(sqlite3,JLongPtr)
 #define S3JniLongPtr_sqlite3_backup(JLongPtr) S3JniLongPtr_T(sqlite3_backup,JLongPtr)
+#define S3JniLongPtr_sqlite3_blob(JLongPtr) S3JniLongPtr_T(sqlite3_blob,JLongPtr)
 #define S3JniLongPtr_sqlite3_stmt(JLongPtr) S3JniLongPtr_T(sqlite3_stmt,JLongPtr)
 
 /*
@@ -2414,27 +2415,23 @@ S3JniApi(sqlite3_bind_zeroblob64(),jint,1bind_1zeroblob64)(
 }
 
 S3JniApi(sqlite3_blob_bytes(),jint,1blob_1bytes)(
-  JniArgsEnvClass, jobject jBlob
+  JniArgsEnvClass, jlong jpBlob
 ){
-  return sqlite3_blob_bytes(PtrGet_sqlite3_blob(jBlob));
+  return sqlite3_blob_bytes(S3JniLongPtr_sqlite3_blob(jpBlob));
 }
 
 S3JniApi(sqlite3_blob_close(),jint,1blob_1close)(
-  JniArgsEnvClass, jobject jBlob
+  JniArgsEnvClass, jlong jpBlob
 ){
-  sqlite3_blob * const b = PtrGet_sqlite3_blob(jBlob);
-  jint const rc = b ? (jint)sqlite3_blob_close(b) : SQLITE_MISUSE;
-  if( b ){
-    NativePointerHolder_set(S3JniNph(sqlite3_blob), jBlob, 0);
-  }
-  return rc;
+  sqlite3_blob * const b = S3JniLongPtr_sqlite3_blob(jpBlob);
+  return b ? (jint)sqlite3_blob_close(b) : SQLITE_MISUSE;
 }
 
 S3JniApi(sqlite3_blob_open(),jint,1blob_1open)(
-  JniArgsEnvClass, jobject jDb, jstring jDbName, jstring jTbl, jstring jCol,
+  JniArgsEnvClass, jlong jpDb, jstring jDbName, jstring jTbl, jstring jCol,
   jlong jRowId, jint flags, jobject jOut
 ){
-  sqlite3 * const db = PtrGet_sqlite3(jDb);
+  sqlite3 * const db = S3JniLongPtr_sqlite3(jpDb);
   sqlite3_blob * pBlob = 0;
   char * zDbName = 0, * zTableName = 0, * zColumnName = 0;
   int rc;
@@ -2462,13 +2459,13 @@ S3JniApi(sqlite3_blob_open(),jint,1blob_1open)(
 }
 
 S3JniApi(sqlite3_blob_read(),jint,1blob_1read)(
-  JniArgsEnvClass, jobject jBlob, jbyteArray jTgt, jint iOffset
+  JniArgsEnvClass, jlong jpBlob, jbyteArray jTgt, jint iOffset
 ){
   jbyte * const pBa = s3jni_jbyteArray_bytes(jTgt);
   int rc = jTgt ? (pBa ? SQLITE_MISUSE : SQLITE_NOMEM) : SQLITE_MISUSE;
   if( pBa ){
     jsize const nTgt = (*env)->GetArrayLength(env, jTgt);
-    rc = sqlite3_blob_read(PtrGet_sqlite3_blob(jBlob), pBa,
+    rc = sqlite3_blob_read(S3JniLongPtr_sqlite3_blob(jpBlob), pBa,
                            (int)nTgt, (int)iOffset);
     if( 0==rc ){
       s3jni_jbyteArray_commit(jTgt, pBa);
@@ -2480,16 +2477,16 @@ S3JniApi(sqlite3_blob_read(),jint,1blob_1read)(
 }
 
 S3JniApi(sqlite3_blob_reopen(),jint,1blob_1reopen)(
-  JniArgsEnvClass, jobject jBlob, jlong iNewRowId
+  JniArgsEnvClass, jlong jpBlob, jlong iNewRowId
 ){
-  return (jint)sqlite3_blob_reopen(PtrGet_sqlite3_blob(jBlob),
+  return (jint)sqlite3_blob_reopen(S3JniLongPtr_sqlite3_blob(jpBlob),
                                    (sqlite3_int64)iNewRowId);
 }
 
 S3JniApi(sqlite3_blob_write(),jint,1blob_1write)(
-  JniArgsEnvClass, jobject jBlob, jbyteArray jBa, jint iOffset
+  JniArgsEnvClass, jlong jpBlob, jbyteArray jBa, jint iOffset
 ){
-  sqlite3_blob * const b = PtrGet_sqlite3_blob(jBlob);
+  sqlite3_blob * const b = S3JniLongPtr_sqlite3_blob(jpBlob);
   jbyte * const pBuf = b ? s3jni_jbyteArray_bytes(jBa) : 0;
   const jsize nBa = pBuf ? (*env)->GetArrayLength(env, jBa) : 0;
   int rc = SQLITE_MISUSE;
@@ -2507,7 +2504,7 @@ static int s3jni_busy_handler(void* pState, int n){
   S3JniDeclLocal_env;
   S3JniHook hook;
 
-  S3JniHook_localdup(&ps->hooks.busyHandler, &hook );
+  S3JniHook_localdup(&ps->hooks.busyHandler, &hook);
   if( hook.jObj ){
     rc = (*env)->CallIntMethod(env, hook.jObj,
                                hook.midCallback, (jint)n);
@@ -2522,9 +2519,9 @@ static int s3jni_busy_handler(void* pState, int n){
 }
 
 S3JniApi(sqlite3_busy_handler(),jint,1busy_1handler)(
-  JniArgsEnvClass, jobject jDb, jobject jBusy
+  JniArgsEnvClass, jlong jpDb, jobject jBusy
 ){
-  S3JniDb * const ps = S3JniDb_from_java(jDb);
+  S3JniDb * const ps = S3JniDb_from_c(S3JniLongPtr_sqlite3(jpDb));
   S3JniHook * const pHook = ps ? &ps->hooks.busyHandler : 0;
   S3JniHook hook = S3JniHook_empty;
   int rc = 0;
@@ -2567,9 +2564,9 @@ S3JniApi(sqlite3_busy_handler(),jint,1busy_1handler)(
 }
 
 S3JniApi(sqlite3_busy_timeout(),jint,1busy_1timeout)(
-  JniArgsEnvClass, jobject jDb, jint ms
+  JniArgsEnvClass, jlong jpDb, jint ms
 ){
-  S3JniDb * const ps = S3JniDb_from_java(jDb);
+  S3JniDb * const ps = S3JniDb_from_c(S3JniLongPtr_sqlite3(jpDb));
   int rc = SQLITE_MISUSE;
   if( ps ){
     S3JniDb_mutex_enter;
@@ -2606,32 +2603,25 @@ S3JniApi(sqlite3_cancel_auto_extension(),jboolean,1cancel_1auto_1extension)(
 }
 
 /* Wrapper for sqlite3_close(_v2)(). */
-static jint s3jni_close_db(JNIEnv * const env, jobject jDb, int version){
+static jint s3jni_close_db(JNIEnv * const env, jlong jpDb, int version){
   int rc = 0;
-  S3JniDb * const ps = S3JniDb_from_java(jDb);
+  S3JniDb * const ps = S3JniDb_from_c(S3JniLongPtr_sqlite3(jpDb));
 
   assert(version == 1 || version == 2);
   if( ps ){
     rc = 1==version
       ? (jint)sqlite3_close(ps->pDb)
       : (jint)sqlite3_close_v2(ps->pDb);
-    if( 0==rc ){
-      NativePointerHolder_set(S3JniNph(sqlite3), jDb, 0);
-    }
   }
   return (jint)rc;
 }
 
-S3JniApi(sqlite3_close_v2(),jint,1close_1v2)(
-  JniArgsEnvClass, jobject pDb
-){
-  return s3jni_close_db(env, pDb, 2);
+S3JniApi(sqlite3_close(),jint,1close)(JniArgsEnvClass, jlong pDb){
+  return s3jni_close_db(env, pDb, 1);
 }
 
-S3JniApi(sqlite3_close(),jint,1close)(
-  JniArgsEnvClass, jobject pDb
-){
-  return s3jni_close_db(env, pDb, 1);
+S3JniApi(sqlite3_close_v2(),jint,1close_1v2)(JniArgsEnvClass, jlong pDb){
+  return s3jni_close_db(env, pDb, 2);
 }
 
 /*
index ae7f8e456a15b87824317fa26a783bb6e373dae0..9a016c2e3fdd2dd69ec9488a5b46f39c25c8fa26 100644 (file)
@@ -958,66 +958,66 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1bind_1zeroblob64
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_blob_bytes
- * Signature: (Lorg/sqlite/jni/sqlite3_blob;)I
+ * Signature: (J)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1blob_1bytes
-  (JNIEnv *, jclass, jobject);
+  (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_blob_close
- * Signature: (Lorg/sqlite/jni/sqlite3_blob;)I
+ * Signature: (J)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1blob_1close
-  (JNIEnv *, jclass, jobject);
+  (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_blob_open
- * Signature: (Lorg/sqlite/jni/sqlite3;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;JILorg/sqlite/jni/OutputPointer/sqlite3_blob;)I
+ * Signature: (JLjava/lang/String;Ljava/lang/String;Ljava/lang/String;JILorg/sqlite/jni/OutputPointer/sqlite3_blob;)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1blob_1open
-  (JNIEnv *, jclass, jobject, jstring, jstring, jstring, jlong, jint, jobject);
+  (JNIEnv *, jclass, jlong, jstring, jstring, jstring, jlong, jint, jobject);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_blob_read
- * Signature: (Lorg/sqlite/jni/sqlite3_blob;[BI)I
+ * Signature: (J[BI)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1blob_1read
-  (JNIEnv *, jclass, jobject, jbyteArray, jint);
+  (JNIEnv *, jclass, jlong, jbyteArray, jint);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_blob_reopen
- * Signature: (Lorg/sqlite/jni/sqlite3_blob;J)I
+ * Signature: (JJ)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1blob_1reopen
-  (JNIEnv *, jclass, jobject, jlong);
+  (JNIEnv *, jclass, jlong, jlong);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_blob_write
- * Signature: (Lorg/sqlite/jni/sqlite3_blob;[BI)I
+ * Signature: (J[BI)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1blob_1write
-  (JNIEnv *, jclass, jobject, jbyteArray, jint);
+  (JNIEnv *, jclass, jlong, jbyteArray, jint);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_busy_handler
- * Signature: (Lorg/sqlite/jni/sqlite3;Lorg/sqlite/jni/BusyHandlerCallback;)I
+ * Signature: (JLorg/sqlite/jni/BusyHandlerCallback;)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1busy_1handler
-  (JNIEnv *, jclass, jobject, jobject);
+  (JNIEnv *, jclass, jlong, jobject);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_busy_timeout
- * Signature: (Lorg/sqlite/jni/sqlite3;I)I
+ * Signature: (JI)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1busy_1timeout
-  (JNIEnv *, jclass, jobject, jint);
+  (JNIEnv *, jclass, jlong, jint);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
@@ -1054,18 +1054,18 @@ JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1clear_1bindings
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_close
- * Signature: (Lorg/sqlite/jni/sqlite3;)I
+ * Signature: (J)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1close
-  (JNIEnv *, jclass, jobject);
+  (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
  * Method:    sqlite3_close_v2
- * Signature: (Lorg/sqlite/jni/sqlite3;)I
+ * Signature: (J)I
  */
 JNIEXPORT jint JNICALL Java_org_sqlite_jni_SQLite3Jni_sqlite3_1close_1v2
-  (JNIEnv *, jclass, jobject);
+  (JNIEnv *, jclass, jlong);
 
 /*
  * Class:     org_sqlite_jni_SQLite3Jni
index 6f77a858922188309a94852f2a1a827273315896..d619bfefed5f467c935953e05a4600792f7d2930 100644 (file)
@@ -436,18 +436,38 @@ public final class SQLite3Jni {
   }
 
   @Canonical
-  public static native int sqlite3_blob_bytes(@NotNull sqlite3_blob blob);
+  private static native int sqlite3_blob_bytes(@NotNull long ptrToBlob);
 
   @Canonical
-  public static native int sqlite3_blob_close(@Nullable sqlite3_blob blob);
+  public static int sqlite3_blob_bytes(@NotNull sqlite3_blob blob){
+    return sqlite3_blob_bytes(blob.getNativePointer());
+  }
 
   @Canonical
-  public static native int sqlite3_blob_open(
-    @NotNull sqlite3 db, @NotNull String dbName,
+  static native int sqlite3_blob_close(@Nullable long ptrToBlob);
+
+  @Canonical
+  public static int sqlite3_blob_close(@Nullable sqlite3_blob blob){
+    return sqlite3_blob_close(blob.clearNativePointer());
+  }
+
+  @Canonical
+  private static native int sqlite3_blob_open(
+    @NotNull long ptrToDb, @NotNull String dbName,
     @NotNull String tableName, @NotNull String columnName,
     long iRow, int flags, @NotNull OutputPointer.sqlite3_blob out
   );
 
+  @Canonical
+  public static int sqlite3_blob_open(
+    @NotNull sqlite3 db, @NotNull String dbName,
+    @NotNull String tableName, @NotNull String columnName,
+    long iRow, int flags, @NotNull OutputPointer.sqlite3_blob out
+  ){
+    return sqlite3_blob_open(db.getNativePointer(), dbName, tableName,
+                             columnName, iRow, flags, out);
+  }
+
   /**
      Convenience overload.
   */
@@ -456,23 +476,48 @@ public final class SQLite3Jni {
     @NotNull String tableName, @NotNull String columnName,
     long iRow, int flags ){
     final OutputPointer.sqlite3_blob out = new OutputPointer.sqlite3_blob();
-    sqlite3_blob_open(db, dbName, tableName, columnName, iRow, flags, out);
+    sqlite3_blob_open(db.getNativePointer(), dbName, tableName, columnName,
+                      iRow, flags, out);
     return out.take();
   };
 
   @Canonical
-  public static native int sqlite3_blob_read(
+  private static native int sqlite3_blob_read(
+    @NotNull long ptrToBlob, @NotNull byte[] target, int iOffset
+  );
+
+  @Canonical
+  public static int sqlite3_blob_read(
     @NotNull sqlite3_blob b, @NotNull byte[] target, int iOffset
+  ){
+    return sqlite3_blob_read(b.getNativePointer(), target, iOffset);
+  }
+
+  @Canonical
+  private static native int sqlite3_blob_reopen(
+    @NotNull long ptrToBlob, long newRowId
   );
 
   @Canonical
-  public static native int sqlite3_blob_reopen(
-    @NotNull sqlite3_blob out, long newRowId
+  public static int sqlite3_blob_reopen(@NotNull sqlite3_blob b, long newRowId){
+    return sqlite3_blob_reopen(b.getNativePointer(), newRowId);
+  }
+
+  @Canonical
+  private static native int sqlite3_blob_write(
+    @NotNull long ptrToBlob, @NotNull byte[] bytes, int iOffset
   );
 
   @Canonical
-  public static native int sqlite3_blob_write(
-    @NotNull sqlite3_blob out, @NotNull byte[] bytes, int iOffset
+  public static int sqlite3_blob_write(
+    @NotNull sqlite3_blob b, @NotNull byte[] bytes, int iOffset
+  ){
+    return sqlite3_blob_write(b.getNativePointer(), bytes, iOffset);
+  }
+
+  @Canonical
+  private static native int sqlite3_busy_handler(
+    @NotNull long ptrToDb, @Nullable BusyHandlerCallback handler
   );
 
   /**
@@ -481,14 +526,19 @@ public final class SQLite3Jni {
      function. Pass it a null handler to clear the busy handler.
   */
   @Canonical
-  public static native int sqlite3_busy_handler(
+  public static int sqlite3_busy_handler(
     @NotNull sqlite3 db, @Nullable BusyHandlerCallback handler
-  );
+  ){
+    return sqlite3_busy_handler(db.getNativePointer(), handler);
+  }
 
   @Canonical
-  public static native int sqlite3_busy_timeout(
-    @NotNull sqlite3 db, int ms
-  );
+  private static native int sqlite3_busy_timeout(@NotNull long ptrToDb, int ms);
+
+  @Canonical
+  public static int sqlite3_busy_timeout(@NotNull sqlite3 db, int ms){
+    return sqlite3_busy_timeout(db.getNativePointer(), ms);
+  }
 
   @Canonical
   public static native boolean sqlite3_cancel_auto_extension(
@@ -511,14 +561,22 @@ public final class SQLite3Jni {
   );
 
   @Canonical
-  public static native int sqlite3_close(
-    @Nullable sqlite3 db
-  );
+  private static native int sqlite3_close(@Nullable long ptrToDb);
 
   @Canonical
-  public static native int sqlite3_close_v2(
-    @Nullable sqlite3 db
-  );
+  public static int sqlite3_close(@Nullable sqlite3 db){
+    final int rc = sqlite3_close(db.getNativePointer());
+    if( 0==rc ) db.clearNativePointer();
+    return rc;
+  }
+
+  @Canonical
+  static native int sqlite3_close_v2(@Nullable long ptrToDb);
+
+  @Canonical
+  public static int sqlite3_close_v2(@Nullable sqlite3 db){
+    return sqlite3_close_v2(db.clearNativePointer());
+  }
 
   @Canonical
   public static native byte[] sqlite3_column_blob(
@@ -831,7 +889,7 @@ public final class SQLite3Jni {
   public static native int sqlite3_error_offset(@NotNull sqlite3 db);
 
   @Canonical
-  private static native int sqlite3_finalize(long ptrToStmt);
+  static native int sqlite3_finalize(long ptrToStmt);
 
   @Canonical
   public static int sqlite3_finalize(@NotNull sqlite3_stmt stmt){
index 3f15c45802296882b305c805dd6b13d758feac38..ba515b3f4f18d1716904e314e0de1dbeacec8711 100644 (file)
@@ -39,10 +39,10 @@ public final class sqlite3 extends NativePointerHolder<sqlite3>
 
   @Override protected void finalize(){
     //System.out.println(this+".finalize()");
-    SQLite3Jni.sqlite3_close_v2(this);
+    SQLite3Jni.sqlite3_close_v2(this.clearNativePointer());
   }
 
   @Override public void close(){
-    SQLite3Jni.sqlite3_close_v2(this);
+    SQLite3Jni.sqlite3_close_v2(this.clearNativePointer());
   }
 }
index e512130256bd06f6866c3e3978572d6a5930e14a..46c3c902936dd96268d1861370deeb2526539397 100644 (file)
@@ -19,7 +19,13 @@ package org.sqlite.jni;
    simply provide a type-safe way to communicate it between Java and C
    via JNI.
 */
-public final class sqlite3_blob extends NativePointerHolder<sqlite3_blob> {
+public final class sqlite3_blob extends NativePointerHolder<sqlite3_blob>
+  implements AutoCloseable {
   // Only invoked from JNI.
   private sqlite3_blob(){}
+
+  @Override public void close(){
+    SQLite3Jni.sqlite3_blob_close(this.clearNativePointer());
+  }
+
 }
index 567a20cfa8a09bd43c58d352b8250cfe715dc301..d918d380c2d23493662384dacdb341c38a3a2eab 100644 (file)
@@ -26,10 +26,10 @@ public final class sqlite3_stmt extends NativePointerHolder<sqlite3_stmt>
 
   //For as-yet-unknown reasons, this triggers a JVM crash.
   //@Override protected void finalize(){
-  //  SQLite3Jni.sqlite3_finalize(this);
+  //  SQLite3Jni.sqlite3_finalize(this.clearNativePointer());
   //}
 
   @Override public void close(){
-    SQLite3Jni.sqlite3_finalize(this);
+    SQLite3Jni.sqlite3_finalize(this.clearNativePointer());
   }
 }
index 2bad9e6801cb08c93148a4baa113b52a96e26497..7cde18ac5386480cd7f59408f1a513adf9c2c95d 100644 (file)
--- a/manifest
+++ b/manifest
@@ -1,5 +1,5 @@
-C Adapt\sJNI\ssqlite3_bind_...()\sbindings\sto\sthe\snew\spointer-passing\smethod\sand\scorrect\sthe\smapping\sof\ssqlite3_bind_zeroblob64()\sto\suse\szeroblob64()\sinstead\sof\szeroblob().\sRelated\sinternal\sAPI\srenaming.
-D 2023-09-27T11:01:32.787
+C Adapted\sJNI\ssqlite3_blob_...()\sand\ssqlite3_close...()\sto\sthe\snew\spointer-passing\smechanism.
+D 2023-09-27T14:41:49.881
 F .fossil-settings/empty-dirs dbb81e8fc0401ac46a1491ab34a7f2c7c0452f2f06b54ebb845d024ca8283ef1
 F .fossil-settings/ignore-glob 35175cdfcf539b2318cb04a9901442804be81cd677d8b889fcc9149c21f239ea
 F LICENSE.md df5091916dbb40e6e9686186587125e1b2ff51f022cc334e886c19a0e9982724
@@ -238,8 +238,8 @@ F ext/icu/sqliteicu.h fa373836ed5a1ee7478bdf8a1650689294e41d0c89c1daab26e9ae78a3
 F ext/jni/GNUmakefile 42e00052401b6dd41c0cdd53b31450606ea37486283abdb038dff9be74bff71e
 F ext/jni/README.md 9fceaeb17cecdc5d699dfc83c0cbc3a03fdb3b86bf676381894166c73375ee75
 F ext/jni/jar-dist.make 030aaa4ae71dd86e4ec5e7c1e6cd86f9dfa47c4592c070d2e35157e42498e1fa
-F ext/jni/src/c/sqlite3-jni.c 7e1e0cf2f06a1d6c813fd3b684b5712dc8cccc6927d5f5d2b89d796f75799fb1
-F ext/jni/src/c/sqlite3-jni.h d503e60cdb9ce98f19d7bdd17a8f1b911931b6dddcc80ebef10c8160a6daab0b
+F ext/jni/src/c/sqlite3-jni.c 2c36a16445e2e39e899b2b51f1d1b5d0f42e3008bfcd5c996fdf606d4429af72
+F ext/jni/src/c/sqlite3-jni.h 8d66d189ac58f000b1143da7631fb30abd4554461369fedaa8a7c1ac5462a530
 F ext/jni/src/org/sqlite/jni/AbstractCollationCallback.java 95e88ba04f4aac51ffec65693e878e234088b2f21b387f4e4285c8b72b33e436
 F ext/jni/src/org/sqlite/jni/AggregateFunction.java 7312486bc65fecdb91753c0a4515799194e031f45edbe16a6373cea18f404dc4
 F ext/jni/src/org/sqlite/jni/AuthorizerCallback.java e6135be32f12bf140bffa39be7fd1a45ad83b2661ed49c08dbde04c8485feb38
@@ -259,7 +259,7 @@ F ext/jni/src/org/sqlite/jni/ProgressHandlerCallback.java 7b9ff2218129ece98ba60c
 F ext/jni/src/org/sqlite/jni/ResultCode.java ba701f20213a5f259e94cfbfdd36eb7ac7ce7797f2c6c7fca2004ff12ce20f86
 F ext/jni/src/org/sqlite/jni/RollbackHookCallback.java d12352c0e22840de484ffa9b11ed5058bb0daca2e9f218055d3c54c947a273c4
 F ext/jni/src/org/sqlite/jni/SQLFunction.java 544a875d33fd160467d82e2397ac33157b29971d715a821a4fad3c899113ee8c
-F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 24ca37368946b4fceabac1913c7a21dbe2a4a9f5db55350b4df2b45d169b4e5f
+F ext/jni/src/org/sqlite/jni/SQLite3Jni.java 51a70421655f8663439037606d1cd5feb5102e032d3e851d860a3dac2dc4e6c0
 F ext/jni/src/org/sqlite/jni/ScalarFunction.java 6d387bb499fbe3bc13c53315335233dbf6a0c711e8fa7c521683219b041c614c
 F ext/jni/src/org/sqlite/jni/TableColumnMetadata.java 54511b4297fa28dcb3f49b24035e34ced10e3fd44fd0e458e784f4d6b0096dab
 F ext/jni/src/org/sqlite/jni/Tester1.java 720e1efddd769d5785e95100ff48aa203f2288eea865326a1a81fd5af43ec3a5
@@ -282,11 +282,11 @@ F ext/jni/src/org/sqlite/jni/fts5/fts5_api.java e2ad9bc06a9d307e0a6221c116457838
 F ext/jni/src/org/sqlite/jni/fts5/fts5_extension_function.java 1fe0f5692c1d67475d12b067f0469949073446f18c56eba5ee5da6ddd06db9b9
 F ext/jni/src/org/sqlite/jni/fts5/fts5_tokenizer.java ea993738b851038c16d98576abd0db3d6028a231f075a394fb8a78c7834d0f6c
 F ext/jni/src/org/sqlite/jni/package-info.java a3946db2504de747a1993c4f6e8ce604bec5a8e5a134b292c3b07527bc321a99
-F ext/jni/src/org/sqlite/jni/sqlite3.java 5e56a799ced58ea69e8bcad20c29a61fce32f21a7f4fb3e2702337cf8aa1a06e
+F ext/jni/src/org/sqlite/jni/sqlite3.java 5cd95c182a38b874ad973b3c16a70a69786fe82a6793abf147639803dec7ecac
 F ext/jni/src/org/sqlite/jni/sqlite3_backup.java 12182124c4d4928d78db5a07ea285f1d7af04c7a148f0759a1972d5bfa87311e
-F ext/jni/src/org/sqlite/jni/sqlite3_blob.java f28a30134f2e524eb7d5ab87f57f86c90140341a6e8369ee54509ac8bb96fa82
+F ext/jni/src/org/sqlite/jni/sqlite3_blob.java fc631ad52feea6e3d1d62b0d0e769ac107c01bc0ddd20eb512aff07b428cda6d
 F ext/jni/src/org/sqlite/jni/sqlite3_context.java 66ca95ce904044263a4aff684abe262d56f73e6b06bca6cf650761d79d7779ad
-F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java 36ecee9bdde2e70c7276d1c22b48fd9c40a77412e8e0694e9c09910997d6fb4f
+F ext/jni/src/org/sqlite/jni/sqlite3_stmt.java cf7f076d8b0f2a23faebbd64e12e8b3dd1977378ca828245d186f1b98458127d
 F ext/jni/src/org/sqlite/jni/sqlite3_value.java 3d1d4903e267bc0bc81d57d21f5e85978eff389a1a6ed46726dbe75f85e6914a
 F ext/jni/src/org/sqlite/jni/tester/SQLTester.java 9892797db57c6e01f0c1601b5866474b6c046f0fd6c5b64f411e5815c941040e
 F ext/jni/src/org/sqlite/jni/tester/test-script-interpreter.md f9f25126127045d051e918fe59004a1485311c50a13edbf18c79a6ff9160030e
@@ -2122,8 +2122,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 bccdfeb9efde20410bde545893fb98ce5c0c4d04a8e7797b868ba8994120e1db
-R 07ea1023a2462cb72e478a493540d516
+P 980d559fff6e55d1e2ef39f242a8a09313a936cfb141807db475bcceff924869
+R d927af0037b6061c9d963a62e64650b9
 U stephan
-Z 250cebc4fc9c64e8ca5d6b6a65662ef8
+Z 1d6d1018657afbb7fe95c6220da9d8bf
 # Remove this line to create a well-formed Fossil manifest.
index 0e420f19f1cd5707b577e0f290acf8cac64f6a70..ef260973fe2d85196e15f11efb4450e3af3dd07c 100644 (file)
@@ -1 +1 @@
-980d559fff6e55d1e2ef39f242a8a09313a936cfb141807db475bcceff924869
\ No newline at end of file
+0b22c8ef93e5ccd45316099fb8575e27620158b1992c0c70fe0348cfc10147f8
\ No newline at end of file