From: Al Poole Date: Thu, 30 Nov 2017 13:57:25 +0000 (+0000) Subject: eina_file: make sure we use a stringshare when virtualized. X-Git-Tag: submit/sandbox/upgrade/efl120/20180319.053334~1446 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=a538f478545e094ae4f158aaf6293ccef4bfb99d;p=platform%2Fupstream%2Fefl.git eina_file: make sure we use a stringshare when virtualized. As the filename is now a stringshare, also make sure virtual files use stringshares for the filename! Also when unmapping we still need to test whether it is copied or not as unmap will break on less tolerant architectures. @fix T6449 --- diff --git a/src/lib/eina/eina_file.c b/src/lib/eina/eina_file.c index d56612f..bf02410 100644 --- a/src/lib/eina/eina_file.c +++ b/src/lib/eina/eina_file.c @@ -300,7 +300,7 @@ eina_file_real_close(Eina_File *file) if (file->fd != -1) { - if (file->global_map != MAP_FAILED) + if (!file->copied && file->global_map != MAP_FAILED) munmap(file->global_map, file->length); close(file->fd); } diff --git a/src/lib/eina/eina_file_common.c b/src/lib/eina/eina_file_common.c index edebaed..1c53226 100644 --- a/src/lib/eina/eina_file_common.c +++ b/src/lib/eina/eina_file_common.c @@ -422,9 +422,9 @@ eina_file_virtualize(const char *virtual_name, const void *data, unsigned long l EINA_MAGIC_SET(file, EINA_FILE_MAGIC); file->filename = (char *)(file + 1); if (virtual_name) - strcpy((char *)file->filename, virtual_name); + file->filename = eina_stringshare_add(virtual_name); else - sprintf((char *)file->filename, tmpname, ti); + file->filename = eina_stringshare_printf(tmpname, ti); eina_lock_recursive_new(&file->lock); file->mtime = ti / 1000;