diff --git a/src/native/common/common_tools.c b/src/native/common/common_tools.c index a03d8258..7ca1f57d 100644 --- a/src/native/common/common_tools.c +++ b/src/native/common/common_tools.c @@ -195,11 +195,11 @@ char * GetStringNativeChars(JNIEnv *env, jstring jstr) { * match GLuchar and ALuchar types */ jstring NewStringNativeUnsigned(JNIEnv *env, const unsigned char *str) { - return NewStringNative(env, (const char *)str); + return NewStringNativeWithLength(env, (const char *)str, strlen((const char *)str)); } // creates locale specific string -jstring NewStringNative(JNIEnv *env, const char *str) { +jstring NewStringNativeWithLength(JNIEnv *env, const char *str, int length) { jclass jcls_str; jmethodID jmethod_str; jstring result; @@ -221,10 +221,10 @@ jstring NewStringNative(JNIEnv *env, const char *str) { if ((*env)->EnsureLocalCapacity(env,2) < 0) { return NULL; /* out of memory error */ } - len = strlen(str); - bytes = (*env)->NewByteArray(env,len); + + bytes = (*env)->NewByteArray(env,length); if (bytes != NULL) { - (*env)->SetByteArrayRegion(env,bytes, 0, len, (jbyte *)str); + (*env)->SetByteArrayRegion(env,bytes, 0, length, (jbyte *)str); result = (jstring)(*env)->NewObject(env,jcls_str, jmethod_str, bytes); (*env)->DeleteLocalRef(env,bytes); return result; @@ -289,7 +289,7 @@ void ext_InitializeClass(JNIEnv *env, jclass clazz, ExtGetProcAddressPROC gpa, i } bool getBooleanProperty(JNIEnv *env, const char* propertyName) { - jstring property = NewStringNative(env, propertyName); + jstring property = NewStringNativeWithLength(env, propertyName, strlen(propertyName)); jclass org_lwjgl_LWJGLUtil_class; jmethodID getBoolean; if (property == NULL) diff --git a/src/native/common/common_tools.h b/src/native/common/common_tools.h index 5b80495a..a5d0925a 100644 --- a/src/native/common/common_tools.h +++ b/src/native/common/common_tools.h @@ -138,7 +138,7 @@ extern void printfDebugJava(JNIEnv *env, const char *format, ...); extern void printfDebug(const char *format, ...); extern bool getBooleanProperty(JNIEnv *env, const char* propertyName); extern char * GetStringNativeChars(JNIEnv *env, jstring jstr); -extern jstring NewStringNative(JNIEnv *env, const char *str); +extern jstring NewStringNativeWithLength(JNIEnv *env, const char *str, int length); extern jstring NewStringNativeUnsigned(JNIEnv *env, const unsigned char *str); extern jobject newJavaManagedByteBuffer(JNIEnv *env, const int size); extern bool positionBuffer(JNIEnv *env, jobject buffer, jint position);