Is returning a value != '0' or '1' as jboolean from a JNI function legal?

Andrew Haley aph at redhat.com
Mon Aug 20 17:23:49 UTC 2018


On 08/20/2018 04:14 PM, Jason Greene wrote:

> IMO departing from C semantics (non-zero = TRUE, zero = false)
> offers little gain and will likely just lead to hard to catch
> bugs. Even if the JNI developer knows the rules, it will be quite
> easy for surprises to show up. For example, a developer might assume
> a library call always returns 1, and wire it straight to a
> boolean. If this assumption is broken (a condition not taken into
> account, or future behavioral differences), then it could quickly
> turn into a lot of wasted time and effort.

It's tricky, though: a C implementation could silently truncate a
value of 0xff00_0000 to (jboolean) 0x00, and there's not a damn thing
that a JVM can do about it: there's literally no way to know.  It's
pretty much unfixable from our end.

-- 
Andrew Haley
Java Platform Lead Engineer
Red Hat UK Ltd. <https://www.redhat.com>
EAC8 43EB D3EF DB98 CC77 2FAD A5CD 6035 332F A671


More information about the core-libs-dev mailing list