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