Restore handle leak, it seamed to cause other errors?!
diff --git a/lib/zip_source_file_win32_utf16.c b/lib/zip_source_file_win32_utf16.c
index a225d1c..8263ac9 100644
--- a/lib/zip_source_file_win32_utf16.c
+++ b/lib/zip_source_file_win32_utf16.c
@@ -94,7 +94,7 @@
return CreateFile2((const wchar_t *)name, access, share_mode, creation_disposition, &extParams);
#else
- // wprintf(L"CreateFileW(\"%s\", %d, %d, %d, %p, %d)\n", (const wchar_t *)name, (int)access, (int)share_mode, (int)creation_disposition, security_attributes, (int)file_attributes);
+ wprintf(L"CreateFileW(\"%s\", %x, %x, %x, %p, %x)\n", (const wchar_t *)name, access, share_mode, creation_disposition, security_attributes, file_attributes);
return CreateFileW((const wchar_t *)name, access, share_mode, security_attributes, creation_disposition, file_attributes, template_file);
#endif
}
diff --git a/lib/zip_source_file_win32_write.c b/lib/zip_source_file_win32_write.c
index c19ec92..dfcf1ad 100644
--- a/lib/zip_source_file_win32_write.c
+++ b/lib/zip_source_file_win32_write.c
@@ -203,7 +203,7 @@
ok = _zip_stat_win32(ctx, st, h);
- CloseHandle(h);
+ // CloseHandle(h);
return ok;
}
@@ -228,10 +228,10 @@
DWORD file_attributes = FILE_ATTRIBUTE_NORMAL;
if (temporary) {
- access |= GENERIC_WRITE;
+ access = GENERIC_READ | GENERIC_WRITE;
share_mode = FILE_SHARE_READ;
creation_disposition = CREATE_NEW;
- file_attributes |= FILE_ATTRIBUTE_TEMPORARY;
+ file_attributes = FILE_ATTRIBUTE_NORMAL | FILE_ATTRIBUTE_TEMPORARY;
}
HANDLE h = write_ops->create_file(name, access, share_mode, security_attributes, creation_disposition, file_attributes, NULL);