Don't depend on malloc(0) to return non-null.
diff --git a/toys/posix/ls.c b/toys/posix/ls.c
index 5dc392c..bba3431 100644
--- a/toys/posix/ls.c
+++ b/toys/posix/ls.c
@@ -320,7 +320,7 @@
   for (sort = 0;;sort = xmalloc(dtlen*sizeof(void *))) {
     for (dtlen = 0, dt = indir->child; dt; dt = dt->next, dtlen++)
       if (sort) sort[dtlen] = dt;
-    if (sort) break;
+    if (sort || !dtlen) break;
   }
 
   // Label directory if not top of tree, or if -R