From 7eb63bc80f05419f53d6412424ef06ea55e11da6 Mon Sep 17 00:00:00 2001 From: jacob Date: Wed, 3 Apr 2024 22:59:18 -0500 Subject: [PATCH] only call CreateFileMapping if size > 0 --- src/sys_win32.c | 38 +++++++++++++++++++++----------------- 1 file changed, 21 insertions(+), 17 deletions(-) diff --git a/src/sys_win32.c b/src/sys_win32.c index 8ac11c14..2f2da9b3 100644 --- a/src/sys_win32.c +++ b/src/sys_win32.c @@ -422,24 +422,25 @@ u64 sys_file_size(struct sys_file file) struct sys_file_map sys_file_map_open_read(struct sys_file file) { - HANDLE map_handle = CreateFileMappingW( - (HANDLE)file.handle, - NULL, - PAGE_READONLY, - 0, - 0, - NULL - ); - - if (!map_handle) { - ASSERT(false); - return (struct sys_file_map) { 0 }; - } - u64 size = sys_file_size(file); u8 *base_ptr = NULL; + HANDLE map_handle = 0; if (size > 0) { + map_handle = CreateFileMappingW( + (HANDLE)file.handle, + NULL, + PAGE_READONLY, + 0, + 0, + NULL + ); + + if (!map_handle) { + ASSERT(false); + return (struct sys_file_map) { 0 }; + } + base_ptr = MapViewOfFile( map_handle, FILE_MAP_READ, @@ -456,7 +457,6 @@ struct sys_file_map sys_file_map_open_read(struct sys_file file) } } else { /* File is empty */ - CloseHandle(map_handle); return (struct sys_file_map) { 0 }; } @@ -468,8 +468,12 @@ struct sys_file_map sys_file_map_open_read(struct sys_file file) void sys_file_map_close(struct sys_file_map map) { - UnmapViewOfFile(map.mapped_memory.data); - CloseHandle((HANDLE)map.handle); + if (map.mapped_memory.data) { + UnmapViewOfFile(map.mapped_memory.data); + } + if (map.handle) { + CloseHandle((HANDLE)map.handle); + } } struct buffer sys_file_map_data(struct sys_file_map map)