From df631a4679f5b517adfc9997e05399c8de5b5f76 Mon Sep 17 00:00:00 2001 From: Matthieu Gautier Date: Wed, 21 Jun 2023 14:45:04 +0200 Subject: [PATCH] Fix Iterators. --- lib/src/main/cpp/libzim/entry_iterator.cpp | 21 +++++++++------------ lib/src/main/cpp/libzim/search_iterator.cpp | 4 +--- 2 files changed, 10 insertions(+), 15 deletions(-) diff --git a/lib/src/main/cpp/libzim/entry_iterator.cpp b/lib/src/main/cpp/libzim/entry_iterator.cpp index 9f19d56..78aa840 100644 --- a/lib/src/main/cpp/libzim/entry_iterator.cpp +++ b/lib/src/main/cpp/libzim/entry_iterator.cpp @@ -66,22 +66,19 @@ METHOD0(void, dispose) METHOD0(jboolean, hasNext) { switch (get_order(env, thisObj)) { case 0: { - PATH_NATIVE_TYPE next(*GET_PTR(PATH_NATIVE_TYPE)); - next++; + PATH_NATIVE_TYPE current(*GET_PTR(PATH_NATIVE_TYPE)); auto end = getPtr(env, thisObj, "nativeHandleEnd"); - return next == *end; + return current != *end; } case 1: { - TITLE_NATIVE_TYPE next(*GET_PTR(TITLE_NATIVE_TYPE)); - next++; + TITLE_NATIVE_TYPE current(*GET_PTR(TITLE_NATIVE_TYPE)); auto end = getPtr(env, thisObj, "nativeHandleEnd"); - return next == *end; + return current != *end; } case 2: { - EFFICIENT_NATIVE_TYPE next(*GET_PTR(EFFICIENT_NATIVE_TYPE)); - next++; + EFFICIENT_NATIVE_TYPE current(*GET_PTR(EFFICIENT_NATIVE_TYPE)); auto end = getPtr(env, thisObj, "nativeHandleEnd"); - return next == *end; + return current != *end; } default: // unreachable!() @@ -92,18 +89,18 @@ METHOD0(jboolean, hasNext) { METHOD0(jobject, next) { switch (get_order(env, thisObj)) { case 0: { - (*GET_PTR(PATH_NATIVE_TYPE))++; zim::Entry entry = **GET_PTR(PATH_NATIVE_TYPE); + (*GET_PTR(PATH_NATIVE_TYPE))++; return BUILD_WRAPPER("org/kiwix/libzim/Entry", entry); } case 1: { - (*GET_PTR(TITLE_NATIVE_TYPE))++; zim::Entry entry = **GET_PTR(TITLE_NATIVE_TYPE); + (*GET_PTR(TITLE_NATIVE_TYPE))++; return BUILD_WRAPPER("org/kiwix/libzim/Entry", entry); } case 2: { - (*GET_PTR(EFFICIENT_NATIVE_TYPE))++; zim::Entry entry = **GET_PTR(EFFICIENT_NATIVE_TYPE); + (*GET_PTR(EFFICIENT_NATIVE_TYPE))++; return BUILD_WRAPPER("org/kiwix/libzim/Entry", entry); } default: diff --git a/lib/src/main/cpp/libzim/search_iterator.cpp b/lib/src/main/cpp/libzim/search_iterator.cpp index 65e1342..c449406 100644 --- a/lib/src/main/cpp/libzim/search_iterator.cpp +++ b/lib/src/main/cpp/libzim/search_iterator.cpp @@ -57,10 +57,8 @@ METHOD0(jstring, getZimId) { } METHOD0(jboolean, hasNext) { - zim::SearchIterator next(*THIS); - next++; auto end = getPtr(env, thisObj, "nativeHandleEnd"); - return next == *end; + return *THIS != *end; } METHOD0(jobject, next) {