[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[cp-patches] FYI: Match JCL_jstring_to_cstring with JCL_free_cstring
From: |
Mark Wielaard |
Subject: |
[cp-patches] FYI: Match JCL_jstring_to_cstring with JCL_free_cstring |
Date: |
Sun, 09 Jan 2005 20:31:24 +0100 |
Hi,
We were leaking memory in some native JNI methods because the strings
returned from JCL_jstring_to_cstring() were never reclaimed by
JCL_free_cstring(). (Don't you love C memory management.)
2005-01-09 Mark Wielaard <address@hidden>
* native/jni/java-io/java_io_VMFile.c
(Java_java_io_VMFile_create): Call JCL_free_cstring() when done with
string.
* native/jni/java-io/javaio.c
(_javaio_open_read): Likewise.
(_javaio_open_readwrite): Likewise.
* native/jni/java-lang/java_lang_VMSystem.c
(Java_java_lang_VMSystem_getenv): Likewise.
* native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c
(Java_gnu_java_nio_channels_FileChannelImpl_open): Likewise.
These were found by running valgrind (http://valgrind.kde.org/) on a
program that was opening lots of files.
Committed,
Mark
Index: native/jni/java-io/java_io_VMFile.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/java-io/java_io_VMFile.c,v
retrieving revision 1.2
diff -u -r1.2 java_io_VMFile.c
--- native/jni/java-io/java_io_VMFile.c 26 Oct 2004 20:26:03 -0000 1.2
+++ native/jni/java-io/java_io_VMFile.c 9 Jan 2005 19:27:23 -0000
@@ -88,10 +88,12 @@
JCL_ThrowException(env,
"java/io/IOException",
TARGET_NATIVE_LAST_ERROR_STRING());
+ JCL_free_cstring(env, name, filename);
return(0);
}
TARGET_NATIVE_FILE_CLOSE(fd,result);
+ JCL_free_cstring(env, name, filename);
return(1);
#else /* not WITHOUT_FILESYSTEM */
return(0);
Index: native/jni/java-io/javaio.c
===================================================================
RCS file: /cvsroot/classpath/classpath/native/jni/java-io/javaio.c,v
retrieving revision 1.13
diff -u -r1.13 javaio.c
--- native/jni/java-io/javaio.c 26 Oct 2004 20:26:03 -0000 1.13
+++ native/jni/java-io/javaio.c 9 Jan 2005 19:27:23 -0000
@@ -82,6 +82,7 @@
TARGET_NATIVE_LAST_ERROR_STRING());
}
+ JCL_free_cstring(env, name, filename);
return(fd);
#else /* not WITHOUT_FILESYSTEM */
return(-1);
@@ -118,6 +119,7 @@
TARGET_NATIVE_LAST_ERROR_STRING());
}
+ JCL_free_cstring(env, name, filename);
return(fd);
#else /* not WITHOUT_FILESYSTEM */
return(-1);
Index: native/jni/java-lang/java_lang_VMSystem.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/java-lang/java_lang_VMSystem.c,v
retrieving revision 1.9
diff -u -r1.9 java_lang_VMSystem.c
--- native/jni/java-lang/java_lang_VMSystem.c 6 Dec 2004 20:43:13 -0000
1.9
+++ native/jni/java-lang/java_lang_VMSystem.c 9 Jan 2005 19:27:23 -0000
@@ -154,5 +154,6 @@
if (envname == NULL)
return NULL;
+ JCL_free_cstring(env, jname, cname);
return (*env)->NewStringUTF(env, envname);
}
Index: native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c
===================================================================
RCS file:
/cvsroot/classpath/classpath/native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c,v
retrieving revision 1.13
diff -u -r1.13 gnu_java_nio_channels_FileChannelImpl.c
--- native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c 26 Oct 2004
20:26:03 -0000 1.13
+++ native/jni/java-nio/gnu_java_nio_channels_FileChannelImpl.c 9 Jan 2005
19:27:23 -0000
@@ -209,7 +209,7 @@
#endif
TARGET_NATIVE_FILE_OPEN(filename,native_fd,flags,permissions,result);
- (*env)->ReleaseStringUTFChars(env, name, filename);
+ JCL_free_cstring(env, name, filename);
if (result != TARGET_NATIVE_OK)
{
signature.asc
Description: This is a digitally signed message part
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [cp-patches] FYI: Match JCL_jstring_to_cstring with JCL_free_cstring,
Mark Wielaard <=