Enlightenment CVS committal

Author  : cedric
Project : e17
Module  : proto/eina

Dir     : e17/proto/eina/src/lib


Modified Files:
        eina_array.c 


Log Message:
Fix improved version of eina_array_remove.


===================================================================
RCS file: /cvs/e/e17/proto/eina/src/lib/eina_array.c,v
retrieving revision 1.4
retrieving revision 1.5
diff -u -3 -r1.4 -r1.5
--- eina_array.c        7 Aug 2008 13:11:13 -0000       1.4
+++ eina_array.c        7 Aug 2008 17:12:06 -0000       1.5
@@ -110,6 +110,7 @@
 eina_array_remove(Eina_Array *array, Eina_Bool (*keep)(void *data, void 
*gdata), void *gdata)
 {
    void **tmp;
+   void *data;
    unsigned int total = 0;
    unsigned int limit;
    unsigned int i;
@@ -118,22 +119,17 @@
 
    for (i = 0; i < array->count; ++i)
      {
-       void *data;
-
        data = _eina_array_get(array, i);
 
-       if (keep(data, gdata) == EINA_FALSE)
-         break;
+       if (keep(data, gdata) == EINA_FALSE) break;
      }
    limit = i;
+   if (i < array->count) ++i;
    for (; i < array->count; ++i)
      {
-       void *data;
-
        data = _eina_array_get(array, i);
 
-       if (keep(data, gdata) == EINA_TRUE)
-         break;
+       if (keep(data, gdata) == EINA_TRUE) break;
      }
    /* Special case all objects that need to stay are at the beginning of the 
array. */
    if (i == array->count)
@@ -159,10 +155,15 @@
    memcpy(tmp, array->data, limit * sizeof(void*));
    total = limit;
 
-   for (; i < array->count; ++i)
+   if (i < array->count)
      {
-       void *data;
+       tmp[total] = data;
+       total++;
+       ++i;
+     }
 
+   for (; i < array->count; ++i)
+     {
        data = _eina_array_get(array, i);
 
        if (keep(data, gdata))



-------------------------------------------------------------------------
This SF.Net email is sponsored by the Moblin Your Move Developer's challenge
Build the coolest Linux based applications with Moblin SDK & win great prizes
Grand prize is a trip for two to an Open Source event anywhere in the world
http://moblin-contest.org/redirect.php?banner_id=100&url=/
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to