Index: uspace/lib/posix/stdlib.c
===================================================================
--- uspace/lib/posix/stdlib.c	(revision 087c87980bf17015f89d56dc5abfb18a9c54e33b)
+++ uspace/lib/posix/stdlib.c	(revision df217a60e9e80dbb838631098d7babbacb1554ba)
@@ -40,4 +40,5 @@
 
 #include "errno.h"
+#include "limits.h"
 
 #include "libc/sort.h"
@@ -138,5 +139,14 @@
 {
 	int (*compare)(const void *, const void *) = userdata;
-	return compare(elem1, elem2);
+	int ret = compare(elem1, elem2);
+	
+	/* Native qsort internals expect this. */
+	if (ret < 0) {
+		return -1;
+	} else if (ret > 0) {
+		return 1;
+	} else {
+		return 0;
+	}
 }
 
@@ -353,5 +363,11 @@
 void *posix_realloc(void *ptr, size_t size)
 {
-	return realloc(ptr, size);
+	if (ptr != NULL && size == 0) {
+		/* Native realloc does not handle this special case. */
+		free(ptr);
+		return NULL;
+	} else {
+		return realloc(ptr, size);
+	}
 }
 
