3 #include "GetNativeString.h"
5 char* GetNativeString(JNIEnv
*env
, jstring jstr
){
10 if ((*env
)->EnsureLocalCapacity(env
, 2) < 0) {
11 return 0; /* out of memory error */
14 jclass stringClass
=(*env
)->FindClass(env
,"java/lang/String");
20 jmethodID MID_String_getBytes
= (*env
)->GetMethodID(env
,stringClass
,"getBytes","()[B");
21 if(!MID_String_getBytes
){
25 bytes
= (*env
)->CallObjectMethod(env
, jstr
,
27 exc
= (*env
)->ExceptionOccurred(env
);
29 jint len
= (*env
)->GetArrayLength(env
, bytes
);
30 result
= malloc(len
+ 1);
33 /*JNU_ThrowByName(env, "java/lang/OutOfMemoryError",
36 (*env
)->DeleteLocalRef(env
, bytes
);
39 (*env
)->GetByteArrayRegion(env
, bytes
, 0, len
,
41 result
[len
] = 0; /* NULL-terminate */
43 (*env
)->DeleteLocalRef(env
, exc
);
45 (*env
)->DeleteLocalRef(env
, bytes
);
49 jstring
GetJavaString(JNIEnv
*env
, char*);