diff options
Diffstat (limited to 'src/stdlib')
-rw-r--r-- | src/stdlib/bsearch.c | 5 | ||||
-rw-r--r-- | src/stdlib/qsort.c | 2 |
2 files changed, 7 insertions, 0 deletions
diff --git a/src/stdlib/bsearch.c b/src/stdlib/bsearch.c index ae60783e..c710406e 100644 --- a/src/stdlib/bsearch.c +++ b/src/stdlib/bsearch.c @@ -12,9 +12,14 @@ void * bsearch(const void * key, const void * base, size_t nmemb, size_t size, i const char *addr = base; SIGNAL_SAFE(0); + ASSERT_NONNULL(key); + ASSERT_NONNULL(base); /* overlap can't be detected because the size of key can't be known */ + /* TODO: ensure everything is in order to start with */ + while (ret == NULL) { + /* TODO: ensure compar doesn't modify things */ int comp = compar(key, addr + (i * size)); if (comp == 0) { return (void*)(addr + (i * size)); diff --git a/src/stdlib/qsort.c b/src/stdlib/qsort.c index 42764817..346dba88 100644 --- a/src/stdlib/qsort.c +++ b/src/stdlib/qsort.c @@ -24,6 +24,7 @@ static void __qsort(char *base, size_t size, size_t lo, size_t hi, int (*compar) } for (j = lo; j < hi; j++) { + /* TODO: ensure compar() doesn't modify things */ if (compar(base + (size * j), base + (size * hi)) < 0) { __swap(base, size, i, j); i++; @@ -38,6 +39,7 @@ static void __qsort(char *base, size_t size, size_t lo, size_t hi, int (*compar) void qsort(void * base, size_t nmemb, size_t size, int (*compar)(const void *, const void *)) { SIGNAL_SAFE(0); + ASSERT_NONNULL(base); __qsort(base, size, 0, nmemb - 1, compar); } |