-/*
- Merge two sorted lists. Keep duplicates (if present)
-*/
-static sortable_t *q_merge (sortable_t *list1, const int n1_elems,
- sortable_t *list2, const int n2_elems)
-{
- const int n_elems = n1_elems + n2_elems;
- sortable_t *res = alloc_list (n_elems);
-
- int i1 = 0;
- int i2 = 0;
- int i = 0;
-
- while ((i < n_elems) && (i1 < n1_elems) && (i2 < n2_elems)) {
- if (COMPARE (list1 [i1], list2 [i2])) {
- res [i ++] = list1 [i1 ++];
- } else {
- res [i ++] = list2 [i2 ++];
- }
- }
-
- while (i1 < n1_elems) {
- res [i ++] = list1 [i1 ++];
- }
-
- while (i2 < n2_elems) {
- res [i ++] = list2 [i2 ++];
- }
-
- return (res);
-}
-