1

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それらの 1 つが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がクラッシュしようとしているとき!私の意見では、これはまだ関数に文書化されるべきです。fileToNTPathNULLmallocJava_java_io_WinNTFileSystem_rename0

4

3 に答える 3

1

原点は正しいと思います。このコードで使用されている他の機能に関する調査では、問題はそれほど重要ではない可能性があることが示唆されていますが、このコード自体を見ると不足しています。

コード レビューの一般的なルールは、誰かが質問をした場合、通常は少なくともコメントを付けてコード内で回答する必要があるというものです。

コメントの一般的なルールは、コードで表現できる場合は、そうすべきであるということです。

疑問を解消するコードを作成すれば、これらの問題はすべて解消されます。

于 2013-04-07T11:27:19.583 に答える
0

pathToNTPath()によって呼び出されるからわかることから、fileToNTPath()の場合にのみ NULL を返すOutOfMemoryExceptionので、数バイトのパス名を解放することにあまり注意を払う必要はないと想定しても安全だと思います。

于 2013-04-07T10:19:06.833 に答える
0

解決済み: io_util_md.cpathToNTPathの関数の  詳細をさらに調べると、メモリ不足エラーの場合にのみ返されることがわかります。 JVMがクラッシュしようとしているとき!私の意見では、これはまだ関数に文書化されるべきです。fileToNTPathNULLmallocJava_java_io_WinNTFileSystem_rename0

于 2013-04-08T08:53:21.613 に答える