static void test_12() { slist sl; slist *l = &sl; slist_init(l); slist_add(l, (void *)42); slist_add(l, (void *)15); slist_add(l, (void *)14); slist_add(l, (void *)13); slist_add(l, (void *)29); slist_add(l, (void *)15); slist_add(l, (void *)25); slist_add(l, (void *)55); slist_add(l, (void *)66); slist_add(l, (void *)23); slist_qsort(l, test_12_compar); ASSERT((int)slist_get(l, 0) == 13); ASSERT((int)slist_get(l, 1) == 14); ASSERT((int)slist_get(l, 2) == 15); ASSERT((int)slist_get(l, 3) == 15); ASSERT((int)slist_get(l, 4) == 23); ASSERT((int)slist_get(l, 5) == 25); ASSERT((int)slist_get(l, 6) == 29); ASSERT((int)slist_get(l, 7) == 42); ASSERT((int)slist_get(l, 8) == 55); ASSERT((int)slist_get(l, 9) == 66); }
static void test_13() { slist sl; slist *l = &sl; slist_init(l); slist_qsort(l, test_12_compar); /* still alive without SIGFPE */ }
/** A generic sort routine to sort several different * types of arrays, in place. * \param player the player executing the sort. * \param s the array to sort. * \param n number of elements in array s * \param sort_type the string that describes the sort type. */ void do_gensort(dbref player, char *keys[], char *strs[], int n, SortType sort_type) { s_rec *sp; ListTypeInfo *lti; int i; lti = get_list_type_info(sort_type); sp = slist_build(player, keys, strs, n, lti); slist_qsort(sp, n, lti); /* Change keys and strs around. */ for (i = 0; i < n; i++) { keys[i] = sp[i].val; if (strs) { strs[i] = sp[i].ptr; } } /* Free the s_rec list */ slist_free(sp, n, lti); free_list_type_info(lti); }