Guarantee that JNIEnv::fatal_error
will not panic or allocate. Expa…
#480
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Overview
This PR adds a guarantee that
JNIEnv::fatal_error
will not panic or allocate.This is needed in order to write a panic handler for native methods without the “
fatal_error
can panic” problem described in #432 (comment).This has the downside (and breaking change) that
fatal_error
now takes a parameter of the exact type&JNIStr
, which makes it somewhat more cumbersome to use. This PR expandsfatal_error
's documentation to explain how to use it the easy way (like in the current version of thejni
crate), as well as how to prepare an error message string in a way that'sunsafe
but panic- and allocation-free.This PR also expands the documentation of
JNIStr
andJNIString
.Note that CI testing has failed on this PR because
jni-sys
0.4 is not in crates.io yet.Definition of Done