cedric pushed a commit to branch master. http://git.enlightenment.org/core/efl.git/commit/?id=48443fda8fff53138edf460532024c51dfcfa611
commit 48443fda8fff53138edf460532024c51dfcfa611 Author: Guilherme Iscaro <[email protected]> Date: Wed Aug 2 16:37:10 2017 -0300 Eina_File: Avoid using munmap() on file->global_map. When a virtualized file is created the file->global_map will not point to a mmapped region, thus it's not safe to use munmap() during the file cleanup. Only use munmap() if the file is backed by a FD. Fixes: T5234. Signed-off-by: Cedric BAIL <[email protected]> --- src/lib/eina/eina_file.c | 10 ++++++---- src/lib/eina/eina_file_win32.c | 9 +++++---- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/src/lib/eina/eina_file.c b/src/lib/eina/eina_file.c index 2fae7b7ad0..7e154db0a0 100644 --- a/src/lib/eina/eina_file.c +++ b/src/lib/eina/eina_file.c @@ -295,10 +295,12 @@ eina_file_real_close(Eina_File *file) free(map); } - if (!file->copied && file->global_map != MAP_FAILED) - munmap(file->global_map, file->length); - - if (file->fd != -1) close(file->fd); + if (file->fd != -1) + { + if (file->global_map != MAP_FAILED) + munmap(file->global_map, file->length); + close(file->fd); + } } static void diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c index 9a5b6fd4e9..3a5831ea10 100644 --- a/src/lib/eina/eina_file_win32.c +++ b/src/lib/eina/eina_file_win32.c @@ -383,11 +383,12 @@ eina_file_real_close(Eina_File *file) free(map); } - if (file->global_map != MAP_FAILED) - UnmapViewOfFile(file->global_map); - if (file->handle != INVALID_HANDLE_VALUE) - CloseHandle(file->handle); + { + if (file->global_map != MAP_FAILED) + UnmapViewOfFile(file->global_map); + CloseHandle(file->handle); + } } static void --
