summaryrefslogtreecommitdiffhomepage
diff options
context:
space:
mode:
-rw-r--r--include/stc/clist.h8
-rw-r--r--misc/examples/new_list.c2
2 files changed, 5 insertions, 5 deletions
diff --git a/include/stc/clist.h b/include/stc/clist.h
index 9a0c844b..3bab94de 100644
--- a/include/stc/clist.h
+++ b/include/stc/clist.h
@@ -386,16 +386,16 @@ STC_DEF int _cx_memb(_sort_cmp_)(const _cx_value* x, const _cx_value* y) {
}
STC_DEF void _cx_memb(_sort_with)(_cx_self* self, int(*cmp)(const _cx_value*, const _cx_value*)) {
- intptr_t len = 0, cap = 0;
- _cx_value *a = NULL, *it;
+ size_t len = 0, cap = 0;
+ _cx_value *a = NULL, *p;
_cx_iter i;
for (i = _cx_memb(_begin)(self); i.ref; _cx_memb(_next)(&i)) {
if (len == cap) a = (_cx_value *)i_realloc(a, (cap += cap/2 + 4)*sizeof *a);
a[len++] = *i.ref;
}
qsort(a, len, sizeof *a, (int(*)(const void*, const void*))cmp);
- for (i = _cx_memb(_begin)(self), it = a; i.ref; _cx_memb(_next)(&i), ++it)
- *i.ref = *it;
+ for (i = _cx_memb(_begin)(self), p = a; i.ref; _cx_memb(_next)(&i), ++p)
+ *i.ref = *p;
i_free(a);
}
#endif // !c_no_cmp
diff --git a/misc/examples/new_list.c b/misc/examples/new_list.c
index 6dbe80b4..23709a64 100644
--- a/misc/examples/new_list.c
+++ b/misc/examples/new_list.c
@@ -11,7 +11,6 @@ struct MyStruct {
#define i_val int
#define i_opt c_is_forward
#define i_tag i32
-#define i_extern // define _clist_mergesort()
#include <stc/clist.h>
struct Point { int x, y; } typedef Point;
@@ -53,6 +52,7 @@ int main()
c_forlist (i, float, {123.3f, 321.2f, -32.2f, 78.2f})
clist_float_push_back(&flst, *i.ref);
+ clist_float_sort(&flst);
c_foreach (i, clist_float, flst) printf(" %g", *i.ref);
}