Something is wrong with JNI's jlong in JDK7

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 _JAVASOFT_JNI_MD_H_
> #define _JAVASOFT_JNI_MD_H_
> 
> #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 /* !_JAVASOFT_JNI_MD_H_ */
> 
> 
> 
> Whereas Apple's JDK 6 always uses "long long":
> 
> 
> 
> #ifndef _JAVASOFT_JNI_MD_H_
> #define _JAVASOFT_JNI_MD_H_
> 
> #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 /* !_JAVASOFT_JNI_MD_H_ */

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

Regards,
Mike Swingler
Apple Inc.



More information about the macosx-port-dev mailing list