From 8ee23ab5209d432e20ce568ed5e8982c78e6858d Mon Sep 17 00:00:00 2001 From: FooIbar <118464521+FooIbar@users.noreply.github.com> Date: Wed, 28 Feb 2024 23:08:41 +0800 Subject: [PATCH] Fix zero-copy branch condition for an edge case --- app/src/main/cpp/archive.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/src/main/cpp/archive.c b/app/src/main/cpp/archive.c index 7bef2976d..3f3224b2e 100644 --- a/app/src/main/cpp/archive.c +++ b/app/src/main/cpp/archive.c @@ -391,7 +391,7 @@ Java_com_hippo_ehviewer_jni_ArchiveKt_extractToByteBuffer(JNIEnv *env, jclass th size_t inner_buff_len = 0; la_int64_t output_ofs = 0; archive_read_data_block(ctx->arc, (const void **) &inner_buff, &inner_buff_len, &output_ofs); - bool zero_copy = !output_ofs && inner_buff_len == size; + bool zero_copy = inner_buff >= archiveAddr && inner_buff < archiveAddr + archiveSize; if (zero_copy) { ctx->using = 0; return (*env)->NewDirectByteBuffer(env, inner_buff, inner_buff_len);