Skip to content

Commit

Permalink
Merge pull request #116 from kiwix/fix_native_crash_on_android
Browse files Browse the repository at this point in the history
Fixed the native crash happening on Android.
  • Loading branch information
MohitMaliFtechiz authored Jan 27, 2025
2 parents 4c6dadb + d7c3899 commit 719a310
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 0 deletions.
3 changes: 3 additions & 0 deletions lib/src/main/cpp/macros.h
Original file line number Diff line number Diff line change
Expand Up @@ -53,6 +53,9 @@ catch(const zim::ZimFileFormatError& e) { \
} catch(const zim::EntryNotFound& e) { \
throwException(env, "org/kiwix/libzim/EntryNotFoundException", e.what()); \
return RET; \
} catch (const NativeHandleDisposedException& e) { \
throwException(env, "java/lang/IllegalStateException", e.what()); \
return RET; \
} catch (const std::ios_base::failure& e) { \
throwException(env, "java/io/IOException", e.what()); \
return RET; \
Expand Down
8 changes: 8 additions & 0 deletions lib/src/main/cpp/utils.h
Original file line number Diff line number Diff line change
Expand Up @@ -96,6 +96,11 @@ inline void setHandle(JNIEnv* env, jobject thisObj, Args && ...args)
}
#define SET_HANDLE(NATIVE_TYPE, OBJ, VALUE) setHandle<NATIVE_TYPE>(env, OBJ, VALUE)

class NativeHandleDisposedException : public std::runtime_error {
public:
explicit NativeHandleDisposedException(const std::string& message)
: std::runtime_error(message) {}
};

// Return a shared_ptr for the handle
template<typename T>
Expand All @@ -104,6 +109,9 @@ shared_ptr<T> getPtr(JNIEnv* env, jobject thisObj, const char* handleName = "nat
jclass thisClass = env->GetObjectClass(thisObj);
jfieldID fidNumber = env->GetFieldID(thisClass, handleName, "J");
auto handle = reinterpret_cast<shared_ptr<T>*>(env->GetLongField(thisObj, fidNumber));
if (handle == nullptr) {
throw NativeHandleDisposedException("The native object has already been disposed");
}
return *handle;
}
#define GET_PTR(NATIVE_TYPE) getPtr<NATIVE_TYPE>(env, thisObj)
Expand Down

0 comments on commit 719a310

Please sign in to comment.