提交 8c8132ba 编写于 作者: N naoto

8035826: [parfait] JNI exception pending in...

8035826: [parfait] JNI exception pending in src/windows/native/sun/util/locale/provider/HostLocaleProviderAdapter_md.c
Reviewed-by: msheppar
上级 35ba97e3
...@@ -154,7 +154,10 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA ...@@ -154,7 +154,10 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
if (pmStr != NULL) { if (pmStr != NULL) {
CFStringGetCString(pmStr, buf, BUFLEN, kCFStringEncodingUTF8); CFStringGetCString(pmStr, buf, BUFLEN, kCFStringEncodingUTF8);
CFRelease(pmStr); CFRelease(pmStr);
(*env)->SetObjectArrayElement(env, ampms, 1, (*env)->NewStringUTF(env, buf)); tmp_string = (*env)->NewStringUTF(env, buf);
if (tmp_string != NULL) {
(*env)->SetObjectArrayElement(env, ampms, 1, tmp_string);
}
} }
} }
CFRelease(df); CFRelease(df);
......
...@@ -235,7 +235,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -235,7 +235,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
return (*env)->NewString(env, pattern, wcslen(pattern)); return (*env)->NewString(env, pattern, (jsize)wcslen(pattern));
} }
/* /*
...@@ -263,6 +263,7 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA ...@@ -263,6 +263,7 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
(JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray ampms) { (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray ampms) {
WCHAR buf[BUFLEN]; WCHAR buf[BUFLEN];
const jchar *langtag; const jchar *langtag;
jstring tmp_string;
// AM // AM
int got; int got;
...@@ -270,13 +271,21 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA ...@@ -270,13 +271,21 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
CHECK_NULL_RETURN(langtag, NULL); CHECK_NULL_RETURN(langtag, NULL);
got = getLocaleInfoWrapper(langtag, LOCALE_S1159, buf, BUFLEN); got = getLocaleInfoWrapper(langtag, LOCALE_S1159, buf, BUFLEN);
if (got) { if (got) {
(*env)->SetObjectArrayElement(env, ampms, 0, (*env)->NewString(env, buf, wcslen(buf))); tmp_string = (*env)->NewString(env, buf, (jsize)wcslen(buf));
if (tmp_string != NULL) {
(*env)->SetObjectArrayElement(env, ampms, 0, tmp_string);
}
} }
if (!(*env)->ExceptionCheck(env)){
// PM // PM
got = getLocaleInfoWrapper(langtag, LOCALE_S2359, buf, BUFLEN); got = getLocaleInfoWrapper(langtag, LOCALE_S2359, buf, BUFLEN);
if (got) { if (got) {
(*env)->SetObjectArrayElement(env, ampms, 1, (*env)->NewString(env, buf, wcslen(buf))); tmp_string = (*env)->NewString(env, buf, (jsize)wcslen(buf));
if (tmp_string != NULL) {
(*env)->SetObjectArrayElement(env, ampms, 1, tmp_string);
}
}
} }
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
...@@ -293,13 +302,17 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA ...@@ -293,13 +302,17 @@ JNIEXPORT jobjectArray JNICALL Java_sun_util_locale_provider_HostLocaleProviderA
(JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray eras) { (JNIEnv *env, jclass cls, jstring jlangtag, jobjectArray eras) {
WCHAR ad[BUFLEN]; WCHAR ad[BUFLEN];
const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE); const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
jstring tmp_string;
CHECK_NULL_RETURN(langtag, eras); CHECK_NULL_RETURN(langtag, eras);
getCalendarInfoWrapper(langtag, getCalendarID(langtag), NULL, getCalendarInfoWrapper(langtag, getCalendarID(langtag), NULL,
CAL_SERASTRING, ad, BUFLEN, NULL); CAL_SERASTRING, ad, BUFLEN, NULL);
// Windows does not provide B.C. era. // Windows does not provide B.C. era.
(*env)->SetObjectArrayElement(env, eras, 1, (*env)->NewString(env, ad, wcslen(ad))); tmp_string = (*env)->NewString(env, ad, (jsize)wcslen(ad));
if (tmp_string != NULL) {
(*env)->SetObjectArrayElement(env, eras, 1, tmp_string);
}
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
...@@ -371,7 +384,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -371,7 +384,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
CHECK_NULL_RETURN(pattern, NULL); CHECK_NULL_RETURN(pattern, NULL);
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
ret = (*env)->NewString(env, pattern, wcslen(pattern)); ret = (*env)->NewString(env, pattern, (jsize)wcslen(pattern));
free(pattern); free(pattern);
return ret; return ret;
...@@ -411,7 +424,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -411,7 +424,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
if (got) { if (got) {
return (*env)->NewString(env, buf, wcslen(buf)); return (*env)->NewString(env, buf, (jsize)wcslen(buf));
} else { } else {
return currencySymbol; return currencySymbol;
} }
...@@ -474,7 +487,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -474,7 +487,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
if (got) { if (got) {
return (*env)->NewString(env, buf, wcslen(buf)); return (*env)->NewString(env, buf, (jsize)wcslen(buf));
} else { } else {
return infinity; return infinity;
} }
...@@ -495,7 +508,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -495,7 +508,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
if (got) { if (got) {
return (*env)->NewString(env, buf, wcslen(buf)); return (*env)->NewString(env, buf, (jsize)wcslen(buf));
} else { } else {
return internationalCurrencySymbol; return internationalCurrencySymbol;
} }
...@@ -558,7 +571,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -558,7 +571,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
(*env)->ReleaseStringChars(env, jlangtag, langtag); (*env)->ReleaseStringChars(env, jlangtag, langtag);
if (got) { if (got) {
return (*env)->NewString(env, buf, wcslen(buf)); return (*env)->NewString(env, buf, (jsize)wcslen(buf));
} else { } else {
return nan; return nan;
} }
...@@ -701,7 +714,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte ...@@ -701,7 +714,7 @@ JNIEXPORT jstring JNICALL Java_sun_util_locale_provider_HostLocaleProviderAdapte
(*env)->ReleaseStringChars(env, jStr, pjChar); (*env)->ReleaseStringChars(env, jStr, pjChar);
if (got) { if (got) {
return (*env)->NewString(env, buf, wcslen(buf)); return (*env)->NewString(env, buf, (jsize)wcslen(buf));
} else { } else {
return NULL; return NULL;
} }
...@@ -754,9 +767,10 @@ jint getCalendarID(const jchar *langtag) { ...@@ -754,9 +767,10 @@ jint getCalendarID(const jchar *langtag) {
void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jobjectArray jarray, CALTYPE* pCalTypes, int offset, int length) { void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jobjectArray jarray, CALTYPE* pCalTypes, int offset, int length) {
WCHAR name[BUFLEN]; WCHAR name[BUFLEN];
const jchar *langtag; const jchar *langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE);
int calid; int calid;
langtag = (*env)->GetStringChars(env, jlangtag, JNI_FALSE); jstring tmp_string;
CHECK_NULL(langtag); CHECK_NULL(langtag);
calid = getCalendarID(langtag); calid = getCalendarID(langtag);
...@@ -765,8 +779,10 @@ void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jobjectArray jarra ...@@ -765,8 +779,10 @@ void replaceCalendarArrayElems(JNIEnv *env, jstring jlangtag, jobjectArray jarra
for (i = 0; i < length; i++) { for (i = 0; i < length; i++) {
getCalendarInfoWrapper(langtag, calid, NULL, getCalendarInfoWrapper(langtag, calid, NULL,
pCalTypes[i], name, BUFLEN, NULL); pCalTypes[i], name, BUFLEN, NULL);
(*env)->SetObjectArrayElement(env, jarray, i + offset, tmp_string = (*env)->NewString(env, name, (jsize)wcslen(name));
(*env)->NewString(env, name, wcslen(name))); if (tmp_string != NULL) {
(*env)->SetObjectArrayElement(env, jarray, i + offset, tmp_string);
}
} }
} }
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册