raster pushed a commit to branch master.

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

commit 8a10ef10cbc2d7513e8e4600dc26bb696f78dc62
Author: Ivan Furs <i.f...@samsung.com>
Date:   Mon Mar 6 19:18:46 2017 +0900

    eina_file: delete handle->fm(handel of function CreateFileMapping)
    
    Summary: CreateFileMapping return handle. The handle before use is always 
closed. This handle can be immediately closed after use.
    
    Reviewers: cedric, raster, vtorri, rimmed, an.kroitor, FurryMyad, NikaWhite
    
    Reviewed By: raster
    
    Subscribers: artem.popov, cedric, jpeg
    
    Tags: #windows
    
    Differential Revision: https://phab.enlightenment.org/D4699
---
 src/lib/eina/eina_file_common.c |  3 +--
 src/lib/eina/eina_file_common.h |  1 -
 src/lib/eina/eina_file_win32.c  | 36 ++++++++++++++----------------------
 3 files changed, 15 insertions(+), 25 deletions(-)

diff --git a/src/lib/eina/eina_file_common.c b/src/lib/eina/eina_file_common.c
index 2c5eeb1..b47cad7 100644
--- a/src/lib/eina/eina_file_common.c
+++ b/src/lib/eina/eina_file_common.c
@@ -436,8 +436,7 @@ eina_file_virtualize(const char *virtual_name, const void 
*data, unsigned long l
 #ifndef _WIN32
    file->fd = -1;
 #else
-   file->handle = NULL;
-   file->fm = NULL;
+   file->handle = INVALID_HANDLE_VALUE;
 #endif
    file->virtual = EINA_TRUE;
    file->map = eina_hash_new(EINA_KEY_LENGTH(eina_file_map_key_length),
diff --git a/src/lib/eina/eina_file_common.h b/src/lib/eina/eina_file_common.h
index e8241d9..6fcecb2 100644
--- a/src/lib/eina/eina_file_common.h
+++ b/src/lib/eina/eina_file_common.h
@@ -94,7 +94,6 @@ struct _Eina_File
    int fd; /**< The file descriptor. */
 #else
    HANDLE handle;  /**< A Win32 file handle for this file. */
-   HANDLE fm;      /**< A Win32 file handle to a file mapping object for this 
file.  */
 #endif
 
    Eina_List *dead_map;          /**< Tracks regions that get a failure from 
mmap(2). */
diff --git a/src/lib/eina/eina_file_win32.c b/src/lib/eina/eina_file_win32.c
index fe83c67..9d6bf1b 100644
--- a/src/lib/eina/eina_file_win32.c
+++ b/src/lib/eina/eina_file_win32.c
@@ -386,8 +386,8 @@ eina_file_real_close(Eina_File *file)
    if (file->global_map != MAP_FAILED && file->handle != NULL)
      UnmapViewOfFile(file->global_map);
 
-   if (file->fm) CloseHandle(file->fm);
-   if (file->handle) CloseHandle(file->handle);
+   if (file->handle != INVALID_HANDLE_VALUE)
+     CloseHandle(file->handle);
 }
 
 static void
@@ -871,29 +871,26 @@ eina_file_map_all(Eina_File *file, Eina_File_Populate 
rule EINA_UNUSED)
    eina_lock_take(&file->lock);
    if (file->global_map == MAP_FAILED)
      {
-        void  *data;
         DWORD max_size_high;
         DWORD max_size_low;
+        HANDLE fm;
 
-        if (file->fm)
-          CloseHandle(file->fm);
 
         max_size_high = (DWORD)((file->length & 0xffffffff00000000ULL) >> 32);
         max_size_low = (DWORD)(file->length & 0x00000000ffffffffULL);
-        file->fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY,
+        fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY,
                                      max_size_high, max_size_low, NULL);
-        if (!file->fm)
+        if (!fm)
           {
              eina_lock_release(&file->lock);
              return NULL;
           }
 
-        data = MapViewOfFile(file->fm, FILE_MAP_READ,
+        file->global_map = MapViewOfFile(fm, FILE_MAP_READ,
                              0, 0, file->length);
-        if (!data)
+        CloseHandle(fm);
+        if (!file->global_map)
           file->global_map = MAP_FAILED;
-        else
-          file->global_map = data;
      }
 
    if (file->global_map != MAP_FAILED)
@@ -935,8 +932,7 @@ eina_file_map_new(Eina_File *file, Eina_File_Populate rule,
    map = eina_hash_find(file->map, &key);
    if (!map)
      {
-        void  *data;
-
+        HANDLE fm;
         map = malloc(sizeof (Eina_File_Map));
         if (!map)
           {
@@ -944,24 +940,20 @@ eina_file_map_new(Eina_File *file, Eina_File_Populate 
rule,
              return NULL;
           }
 
-        if (file->fm)
-          CloseHandle(file->fm);
-
         /* the length parameter is unsigned long, that is a DWORD */
         /* so the max size high parameter of CreateFileMapping is 0 */
-        file->fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY,
+        fm = CreateFileMapping(file->handle, NULL, PAGE_READONLY,
                                      0, (DWORD)length, NULL);
-        if (!file->fm)
+        if (!fm)
           return NULL;
 
-        data = MapViewOfFile(file->fm, FILE_MAP_READ,
+        map->map = MapViewOfFile(fm, FILE_MAP_READ,
                              offset & 0xffff0000,
                              offset & 0x0000ffff,
                              length);
-        if (!data)
+        CloseHandle(fm);
+        if (!map->map)
           map->map = MAP_FAILED;
-        else
-          map->map = data;
 
         map->offset = offset;
         map->length = length;

-- 


Reply via email to