From 6c0e60c9c8755824d59a8608539d0ddd2edc01f3 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Mon, 22 Apr 2024 11:05:23 +0200 Subject: [PATCH] fixup! Allow `zim::Archive` to be created with a set of File descriptor. --- lib/src/main/cpp/libzim/archive.cpp | 15 ++++++++------- lib/src/main/java/org/kiwix/libzim/FdInput.java | 6 ++++++ 2 files changed, 14 insertions(+), 7 deletions(-) diff --git a/lib/src/main/cpp/libzim/archive.cpp b/lib/src/main/cpp/libzim/archive.cpp index 2b976e5..92e3f92 100644 --- a/lib/src/main/cpp/libzim/archive.cpp +++ b/lib/src/main/cpp/libzim/archive.cpp @@ -64,16 +64,17 @@ int jni2fd(const jobject& fdObj, JNIEnv* env) zim::FdInput jni2fdInput(const jobject& fdInputObj, JNIEnv* env) { - jclass class_fdesc = env->FindClass("org/kiwix/FdInput"); - jfieldID field_id = env->GetFieldID(class_fdesc, "fd", "java/io/FileDescriptor"); - jobject fdObj = env->GetField(fdInputObj, field_id); + jclass class_fdesc = env->FindClass("org/kiwix/libzim/FdInput"); + + jfieldID field_id = env->GetFieldID(class_fdesc, "fd", "Ljava/io/FileDescriptor;"); + jobject fdObj = env->GetObjectField(fdInputObj, field_id); int fd = jni2fd(fdObj, env); field_id = env->GetFieldID(class_fdesc, "offset", "J"); - long offset = env->GetLongField(fdObj, field_id); + long offset = env->GetLongField(fdInputObj, field_id); field_id = env->GetFieldID(class_fdesc, "size", "J"); - long size = env->GetLongField(fdObj, field_id); + long size = env->GetLongField(fdInputObj, field_id); return zim::FdInput(fd, offset, size); } @@ -147,13 +148,13 @@ JNIEXPORT void JNICALL Java_org_kiwix_libzim_Archive_setNativeArchiveEmbeddedFds #ifndef _WIN32 jsize length = env->GetArrayLength(fdsObj); - std::vector v(length); + std::vector v; int i; for(i = 0; iGetObjectArrayElement(fdsObj, i); auto fdInput = jni2fdInput(fdObj, env); - v.push_pack(fdInput); + v.push_back(fdInput); } try { diff --git a/lib/src/main/java/org/kiwix/libzim/FdInput.java b/lib/src/main/java/org/kiwix/libzim/FdInput.java index c8f1c84..f361236 100644 --- a/lib/src/main/java/org/kiwix/libzim/FdInput.java +++ b/lib/src/main/java/org/kiwix/libzim/FdInput.java @@ -26,4 +26,10 @@ public class FdInput public FileDescriptor fd; public long offset; public long size; + + public FdInput(FileDescriptor fd_, long offset_, long size_) { + fd = fd_; + offset = offset_; + size = size_; + } }