Add FILE_SHARE_WRITE to Win32 sharing mode, as suggested by Lubomir Ivanov, to avoid zip_open() failing to open files already opened via fopen().
diff --git a/lib/zip_source_win32a.c b/lib/zip_source_win32a.c index bb3ebaa..0b79e63 100644 --- a/lib/zip_source_win32a.c +++ b/lib/zip_source_win32a.c
@@ -84,7 +84,7 @@ static HANDLE _win32_open_a(_zip_source_win32_read_file_t *ctx) { - return CreateFileA(ctx->fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + return CreateFileA(ctx->fname, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); }
diff --git a/lib/zip_source_win32w.c b/lib/zip_source_win32w.c index d18b432..40d34fb 100644 --- a/lib/zip_source_win32w.c +++ b/lib/zip_source_win32w.c
@@ -84,7 +84,7 @@ static HANDLE _win32_open_w(_zip_source_win32_read_file_t *ctx) { - return CreateFileW(ctx->fname, GENERIC_READ, FILE_SHARE_READ, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); + return CreateFileW(ctx->fname, GENERIC_READ, FILE_SHARE_READ | FILE_SHARE_WRITE, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); }