Enlightenment CVS committal

Author  : raster
Project : e17
Module  : libs/eet

Dir     : e17/libs/eet/src/lib


Modified Files:
        eet_lib.c 


Log Message:


actually close files

===================================================================
RCS file: /cvs/e/e17/libs/eet/src/lib/eet_lib.c,v
retrieving revision 1.63
retrieving revision 1.64
diff -u -3 -r1.63 -r1.64
--- eet_lib.c   13 Jun 2006 10:20:22 -0000      1.63
+++ eet_lib.c   22 Jun 2006 19:21:31 -0000      1.64
@@ -160,7 +160,7 @@
    int         new_cache_alloc;
 
    new_cache_num = *cache_num;
-   if (new_cache_num > 128) /* avoid fd overruns - limit to 128 (most recent) 
in the cache */
+   if (new_cache_num >= 64) /* avoid fd overruns - limit to 128 (most recent) 
in the cache */
      {
        Eet_File        *del_ef = NULL;
        int             i;
@@ -188,7 +188,7 @@
    new_cache_num++;
    if (new_cache_num > new_cache_alloc)
      {
-       new_cache_alloc += 64;
+       new_cache_alloc += 16;
        new_cache = realloc(new_cache, new_cache_alloc * sizeof(Eet_File *));
        if (!new_cache)
          {
@@ -229,9 +229,9 @@
    for (j = i; j < new_cache_num; j++)
      new_cache[j] = new_cache[j + 1];
 
-   if (new_cache_num < (new_cache_alloc - 64))
+   if (new_cache_num < (new_cache_alloc - 16))
      {
-       new_cache_alloc -= 64;
+       new_cache_alloc -= 16;
        if (new_cache_num > 0)
          {
             new_cache = realloc(new_cache, new_cache_alloc * sizeof(Eet_File 
*));
@@ -362,8 +362,6 @@
 
    /* no more writes pending */
    ef->writes_pending = 0;
-   fclose(ef->fp);
-   ef->fp = NULL;
    
    return EET_ERROR_NONE;
    
@@ -413,13 +411,13 @@
    */
    for (i = 0; i < eet_writers_num; i++)
      {
-       if (eet_writers[i]->references == 0)
+       if (eet_writers[i]->references <= 0)
          num++;
      }
    
    for (i = 0; i < eet_readers_num; i++)
      {
-       if (eet_readers[i]->references == 0)
+       if (eet_readers[i]->references <= 0)
          num++;
      }
 
@@ -431,18 +429,20 @@
        num = 0;
        for (i = 0; i < eet_writers_num; i++)
          {
-            if (eet_writers[i]->references == 0)
+            if (eet_writers[i]->references <= 0)
               {
                  closelist[num] = eet_writers[i];
+                 eet_writers[i]->delete_me_now = 1;
                  num++;
               }
          }
        
        for (i = 0; i < eet_readers_num; i++)
          {
-            if (eet_readers[i]->references == 0)
+            if (eet_readers[i]->references <= 0)
               {
                  closelist[num] = eet_readers[i];
+                 eet_readers[i]->delete_me_now = 1;
                  num++;
               }
          }
@@ -545,6 +545,7 @@
    ef->data = NULL;
    ef->data_size = 0;
 
+   fcntl(fileno(ef->fp), F_SETFD, FD_CLOEXEC);
    /* if we opened for read or read-write */
    if ((mode == EET_FILE_MODE_READ) || (mode == EET_FILE_MODE_READ_WRITE))
      {
@@ -751,6 +752,7 @@
    /* if not urgent to delete it - dont free it - leave it in cache */
    if ((!ef->delete_me_now) && (ef->mode == EET_FILE_MODE_READ))
      return EET_ERROR_NONE;
+   
    /* remove from cache */
    if (ef->mode == EET_FILE_MODE_READ)
      eet_cache_del(ef, &eet_readers, &eet_readers_num, &eet_readers_alloc);
@@ -790,11 +792,12 @@
          }
        free(ef->header);
      }
-   if (ef->data)
-     munmap(ef->data, ef->data_size);
+   if (ef->data) munmap(ef->data, ef->data_size);
+   if (ef->fp) fclose(ef->fp);
 
    /* zero out ram for struct - caution tactic against stale memory use */
    memset(ef, 0, sizeof(Eet_File));
+   
    /* free it */
    free(ef);
    return err;



Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to