netstar pushed a commit to branch master.

http://git.enlightenment.org/core/efl.git/commit/?id=a538f478545e094ae4f158aaf6293ccef4bfb99d

commit a538f478545e094ae4f158aaf6293ccef4bfb99d
Author: Al Poole <nets...@gmail.com>
Date:   Thu Nov 30 13:57:25 2017 +0000

    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
---
 src/lib/eina/eina_file.c        | 2 +-
 src/lib/eina/eina_file_common.c | 4 ++--
 2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/src/lib/eina/eina_file.c b/src/lib/eina/eina_file.c
index d56612fc75..bf02410ff5 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 edebaed326..1c53226a35 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;

-- 


Reply via email to