我认为http://download.java.net/openjdk/jdk6/promoted/b27/openjdk-6-src-b27-中的文件jdk/src/windows/native/java/io/WinNTFileSystem_md.c中的以下函数26_oct_2012.tar.gz忽略释放所使用的内存,frompath
或者topath
如果发现其中之一NULL
...
JNIEXPORT jboolean JNICALL
Java_java_io_WinNTFileSystem_rename0(JNIEnv *env, jobject this, jobject from,
jobject to)
{
jboolean rv = JNI_FALSE;
WCHAR *frompath = fileToNTPath(env, from, ids.path);
WCHAR *topath = fileToNTPath(env, to, ids.path);
if (frompath == NULL || topath == NULL)
return JNI_FALSE;
if (_wrename(frompath, topath) == 0) {
rv = JNI_TRUE;
}
free(frompath);
free(topath);
return rv;
}
我错过了什么吗?这实际上是一个错误吗?
已解决: 进一步查看io_util_md.cpathToNTPath
中函数的详细信息,我可以看到它只会在内存不足错误的情况下返回,所以我想我们不在乎是否忽略了释放我们编辑的东西当JVM即将崩溃时!在我看来,这仍然应该记录在函数中。fileToNTPath
NULL
malloc
Java_java_io_WinNTFileSystem_rename0