+static void stable_sort(xbt_dynar_t a)
+{
+ unsigned long len = xbt_dynar_length(a);
+ void **b = xbt_new(void*, len);
+ unsigned long i;
+ for (i = 0 ; i < len ; i++) /* fill the array b with pointers to strings */
+ b[i] = xbt_dynar_get_ptr(a, i);
+ qsort(b, len, sizeof *b, cmpstringp); /* sort it */
+ for (i = 0 ; i < len ; i++) /* dereference the pointers to get the strings */
+ b[i] = *(char**)b[i];
+ for (i = 0 ; i < len ; i++) /* put everything in place */
+ xbt_dynar_set_as(a, i, char*, b[i]);
+ xbt_free(b);
+}