[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[tyndur-devel] [PATCH] libc: Fixes fuer qsort
! libc: qsort muss auch null Objekte sortieren koennen (size_t ist
unsigned, deswegen geht der Vergleich schief)
! libc: qsort kann ein temporaeres Objekt einfach auf dem Stack
anzulegen anstatt malloc zu nehmen und dann zu leaken
Signed-off-by: Kevin Wolf <kevin@xxxxxxxxxx>
---
src/lib/sort.c | 8 +++++++-
1 files changed, 7 insertions(+), 1 deletions(-)
diff --git a/src/lib/sort.c b/src/lib/sort.c
index bb813c4..8717c96 100644
--- a/src/lib/sort.c
+++ b/src/lib/sort.c
@@ -34,8 +34,14 @@ void qsort(void *base, size_t num, size_t size, int (*comparator)(const void *,
//FIXME
//Die Funktion heiÃ?t Qsort... Gnomesort tuts zwar meistens auch, ist aber
//nicht Sinn der Sache, au�erdem bin ich grad zu müde für sowas :p
- void *tmp = malloc(size);
+ unsigned char _tmp[size];
+ void* tmp = _tmp;
int i = 0;
+
+ if (num == 0) {
+ return;
+ }
+
while (i < (num - 1)) {
if (comparator(base + i * size, base + (i + 1) * size) > 0) {
memcpy(tmp, base + i * size, size);
--
1.6.0.2