mirror of
https://github.com/openjdk/jdk.git
synced 2025-08-28 15:24:43 +02:00
8213366: (fs) avoid handle leak in Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile0
Reviewed-by: alanb, chegar
This commit is contained in:
parent
a9ae141836
commit
968f65c036
1 changed files with 6 additions and 2 deletions
|
@ -311,8 +311,10 @@ Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstFile0(JNIEnv* env, jclass this,
|
||||||
HANDLE handle = FindFirstFileW(lpFileName, &data);
|
HANDLE handle = FindFirstFileW(lpFileName, &data);
|
||||||
if (handle != INVALID_HANDLE_VALUE) {
|
if (handle != INVALID_HANDLE_VALUE) {
|
||||||
jstring name = (*env)->NewString(env, data.cFileName, (jsize)wcslen(data.cFileName));
|
jstring name = (*env)->NewString(env, data.cFileName, (jsize)wcslen(data.cFileName));
|
||||||
if (name == NULL)
|
if (name == NULL) {
|
||||||
|
FindClose(handle);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
(*env)->SetLongField(env, obj, findFirst_handle, ptr_to_jlong(handle));
|
(*env)->SetLongField(env, obj, findFirst_handle, ptr_to_jlong(handle));
|
||||||
(*env)->SetObjectField(env, obj, findFirst_name, name);
|
(*env)->SetObjectField(env, obj, findFirst_name, name);
|
||||||
(*env)->SetIntField(env, obj, findFirst_attributes, data.dwFileAttributes);
|
(*env)->SetIntField(env, obj, findFirst_attributes, data.dwFileAttributes);
|
||||||
|
@ -362,8 +364,10 @@ Java_sun_nio_fs_WindowsNativeDispatcher_FindFirstStream0(JNIEnv* env, jclass thi
|
||||||
handle = FindFirstStreamW(lpFileName, FindStreamInfoStandard, &data, 0);
|
handle = FindFirstStreamW(lpFileName, FindStreamInfoStandard, &data, 0);
|
||||||
if (handle != INVALID_HANDLE_VALUE) {
|
if (handle != INVALID_HANDLE_VALUE) {
|
||||||
jstring name = (*env)->NewString(env, data.cStreamName, (jsize)wcslen(data.cStreamName));
|
jstring name = (*env)->NewString(env, data.cStreamName, (jsize)wcslen(data.cStreamName));
|
||||||
if (name == NULL)
|
if (name == NULL) {
|
||||||
|
FindClose(handle);
|
||||||
return;
|
return;
|
||||||
|
}
|
||||||
(*env)->SetLongField(env, obj, findStream_handle, ptr_to_jlong(handle));
|
(*env)->SetLongField(env, obj, findStream_handle, ptr_to_jlong(handle));
|
||||||
(*env)->SetObjectField(env, obj, findStream_name, name);
|
(*env)->SetObjectField(env, obj, findStream_name, name);
|
||||||
} else {
|
} else {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue