Something is wrong with JNI's jlong in JDK7 (original) (raw)

Mike Swingler swingler at apple.com
Tue Nov 13 13:36:33 PST 2012


On Nov 13, 2012, at 8:21 AM, Scott Palmer <swpalmer at gmail.com> wrote:

I just noticed that the criteria for defining jlong has changed from that given in Apple's JDK 6 vs. Oracle's JDK 7. This caused some code of mine to break because it seems to be wrong under some circumstances.

JDK 7u10 has this. Note that sometimes a jlong is a C "long" and sometimes it is a C "long long": #ifndef JAVASOFTJNIMDH #define JAVASOFTJNIMDH #define JNIEXPORT #define JNIIMPORT #define JNICALL typedef int jint; #ifdef LP64 /* 64-bit Solaris */ typedef long jlong; #else typedef long long jlong; #endif typedef signed char jbyte; #endif /* !JAVASOFTJNIMDH */

Whereas Apple's JDK 6 always uses "long long": #ifndef JAVASOFTJNIMDH #define JAVASOFTJNIMDH #define JNIEXPORT attribute((visibility("default"))) #define JNIIMPORT #define JNICALL #if defined(LP64) && LP64 /* for -Wundef */ typedef int jint; #else typedef long jint; #endif typedef long long jlong; typedef signed char jbyte; #endif /* !JAVASOFTJNIMDH */

Have you filed a bug at <http://bugs.sun.com>?

Regards, Mike Swingler Apple Inc.



More information about the macosx-port-dev mailing list