Enlightenment CVS committal

Author  : tsauerbeck
Project : e17
Module  : libs/evas

Dir     : e17/libs/evas/src/lib/data


Modified Files:
        evas_list.c 


Log Message:
make evas_list_sort more bullet-proof
===================================================================
RCS file: /cvsroot/enlightenment/e17/libs/evas/src/lib/data/evas_list.c,v
retrieving revision 1.11
retrieving revision 1.12
diff -u -3 -r1.11 -r1.12
--- evas_list.c 25 Feb 2005 15:15:41 -0000      1.11
+++ evas_list.c 25 Feb 2005 15:31:52 -0000      1.12
@@ -854,25 +854,36 @@
 evas_list_sort(Evas_List *list, int size, int (*func)(void *, void *))
 {
     Evas_List *l = NULL, *ll = NULL;
-    int range = (size / 2);
+    int mid;
+
+    if (!list || !func)
+      return NULL;
+
+    /* if the caller specified an invalid size, sort the whole list */
+    if (size <= 0 || size > list->count)
+      size = list->count;
+
+    mid = size / 2;
+    if (mid < 1)
+      return list;
+
+    /* bleh evas list splicing */
+    ll = evas_list_nth_list(list, mid);
+    if (ll->prev)
+      {
+        list->last = ll->prev;
+        list->count = mid;
+        ll->prev->next = NULL;
+        ll->prev = NULL;
+      }
+
+    ll->count = size - mid;
+
+    /* merge sort */
+    l = evas_list_sort(list, mid, func);
+    ll = evas_list_sort(ll, size - mid, func);
+    list = evas_list_combine(l, ll, func);
 
-    if(range > 0)
-    {
-       /* bleh evas list splicing */
-       ll = evas_list_nth_list(list, range);
-       if(ll->prev)
-       {
-           list->last = ll->prev;
-           list->count = range;
-       }
-       ll->prev->next = NULL;
-       ll->count = size - range;
-
-       /* merge sort */
-       l = evas_list_sort(list, range, func);
-       ll = evas_list_sort(ll, size - range, func);
-       list = evas_list_combine(l, ll, func);
-    }
     return(list);
 }
 /**




-------------------------------------------------------
SF email is sponsored by - The IT Product Guide
Read honest & candid reviews on hundreds of IT Products from real users.
Discover which products truly live up to the hype. Start reading now.
http://ads.osdn.com/?ad_id=6595&alloc_id=14396&op=click
_______________________________________________
enlightenment-cvs mailing list
enlightenment-cvs@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/enlightenment-cvs

Reply via email to