diff --git a/include/pocketpy/common/algorithm.h b/include/pocketpy/common/algorithm.h index 3e36d32b..8f4f5b88 100644 --- a/include/pocketpy/common/algorithm.h +++ b/include/pocketpy/common/algorithm.h @@ -34,7 +34,7 @@ * `strcmp`. */ bool c11__stable_sort(void* ptr, - int count, + int length, int elem_size, int (*f_lt)(const void* a, const void* b, void* extra), void* extra); diff --git a/src/common/algorithm.c b/src/common/algorithm.c index b32fe238..e908984e 100644 --- a/src/common/algorithm.c +++ b/src/common/algorithm.c @@ -33,16 +33,16 @@ static bool merge(char* a, } bool c11__stable_sort(void* ptr_, - int count, + int length, int elem_size, int (*f_lt)(const void* a, const void* b, void* extra), void* extra) { // merge sort - char *ptr = ptr_, *tmp = malloc(count * elem_size); - for(int seg = 1; seg < count; seg *= 2) { - for(char* a = ptr; a < ptr + (count - seg) * elem_size; a += 2 * seg * elem_size) { + char *ptr = ptr_, *tmp = malloc(length * elem_size); + for(int seg = 1; seg < length; seg *= 2) { + for(char* a = ptr; a < ptr + (length - seg) * elem_size; a += 2 * seg * elem_size) { char *b = a + seg * elem_size, *a_end = b, *b_end = b + seg * elem_size; - if(b_end > ptr + count * elem_size) b_end = ptr + count * elem_size; + if(b_end > ptr + length * elem_size) b_end = ptr + length * elem_size; bool ok = merge(a, a_end, b, b_end, tmp, elem_size, f_lt, extra); if(!ok) { free(tmp);