* test-suite/tests/sort.test: Added. Both tests in that file did
authorDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Tue, 22 Apr 2003 23:32:40 +0000 (23:32 +0000)
committerDirk Herrmann <dirk@dirk-herrmanns-seiten.de>
Tue, 22 Apr 2003 23:32:40 +0000 (23:32 +0000)
commitd339981a5a1dd88fabbf02d72503d8c819a6f199
tree13e9171797f073a2d92f3792022166e00bf0a335
parent2d2f76fc5fb75f894881ea10a6223ee52dc333e5
* test-suite/tests/sort.test: Added.  Both tests in that file did
fail (one even with a segfault) with CVS guile before the recent
changes to libguile/sort.c.

* libguile/sort.c: Replaced hand-made trampline code by the new
official mechanism from eval.c.  This fixes a segfault in the new
test file test-suite/tests/sort.test.

(quicksort, compare_function, scm_restricted_vector_sort_x,
scm_sorted_p, scm_merge, scm_merge_list_x, scm_merge_x,
scm_merge_list_step, scm_sort_x, scm_sort, scm_merge_vector_x,
scm_merge_vector_step, scm_stable_sort_x, scm_stable_sort,
scm_sort_list_x, scm_sort_list): Use trampoline mechanism from
eval.c.

(subr2less, lsubrless, closureless, applyless, scm_cmp_function,
cmp_fun_t): Removed.

(compare_function): Added.

* libguile/sort.c (quicksort, SWAP, stack_node): Replaced pointer
arithmetics with index arithmetics.  Changed quicksort to work on
an array of SCM values instead of an array of characters.  Avoid
bytewise copying of SCM elements.  Avoid allocating memory on the
stack with alloca.  Fixed some comments.
libguile/ChangeLog
libguile/sort.c
test-suite/ChangeLog
test-suite/tests/sort.test [new file with mode: 0644]