Something is wrong with JNI's jlong in JDK7
Scott Palmer
swpalmer at gmail.com
Tue Nov 13 14:00:02 PST 2012
On 2012-11-13, at 4:36 PM, Mike Swingler <swingler at apple.com> wrote:
> 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>?
Just… I filed it against "javah" since there was no more appropriate category available.
Scott
More information about the macosx-port-dev
mailing list