cedric pushed a commit to branch master.

commit deacfdce24871b744618ac598c2a54774291e620
Author: Jean-Philippe Andre <[email protected]>
Date:   Thu Aug 22 21:13:38 2013 +0900

    eina: Fix invalid check on Eina_File::global_map
    
    global_map is set to MAP_FAILED in case of error after mmap.
    So, it is initialized to MAP_FAILED and considered valid
    otherwise.
    
    So, we don't want to set the map to NULL or even check again NULL.
---
 src/lib/eina/eina_file.c        | 2 +-
 src/lib/eina/eina_file_common.c | 9 +++++++--
 2 files changed, 8 insertions(+), 3 deletions(-)

diff --git a/src/lib/eina/eina_file.c b/src/lib/eina/eina_file.c
index ae68287..dd2d164 100644
--- a/src/lib/eina/eina_file.c
+++ b/src/lib/eina/eina_file.c
@@ -509,7 +509,7 @@ eina_file_mmap_faulty(void *addr, long page_size)
 
         eina_lock_take(&f->lock);
 
-        if (f->global_map)
+        if (f->global_map != MAP_FAILED)
           {
              if ((unsigned char *) addr < (((unsigned char *)f->global_map) + 
f->length) &&
                  (((unsigned char *) addr) + page_size) >= (unsigned char *) 
f->global_map)
diff --git a/src/lib/eina/eina_file_common.c b/src/lib/eina/eina_file_common.c
index a154b1e..5c59b86 100644
--- a/src/lib/eina/eina_file_common.c
+++ b/src/lib/eina/eina_file_common.c
@@ -48,6 +48,11 @@
 # include <Escape.h>
 #endif
 
+#ifdef MAP_FAILED
+# undef MAP_FAILED
+#endif
+#define MAP_FAILED ((void *)-1)
+
 Eina_Hash *_eina_file_cache = NULL;
 Eina_Lock _eina_file_lock_cache;
 
@@ -281,7 +286,7 @@ eina_file_flush(Eina_File *file, unsigned long int length)
    Eina_List *l;
 
    // File size changed
-   if (file->global_map)
+   if (file->global_map != MAP_FAILED)
      {
         // Forget global map
         tmp = malloc(sizeof (Eina_File_Map));
@@ -295,7 +300,7 @@ eina_file_flush(Eina_File *file, unsigned long int length)
              file->dead_map = eina_list_append(file->dead_map, tmp);
           }
 
-        file->global_map = NULL;
+        file->global_map = MAP_FAILED;
         file->refcount = 0;
      }
 

-- 

------------------------------------------------------------------------------
Learn the latest--Visual Studio 2012, SharePoint 2013, SQL 2012, more!
Discover the easy way to master current and previous Microsoft technologies
and advance your career. Get an incredible 1,500+ hours of step-by-step
tutorial videos with LearnDevNow. Subscribe today and save!
http://pubads.g.doubleclick.net/gampad/clk?id=58040911&iu=/4140/ostg.clktrk

Reply via email to