--- libeio/eio.c 2009/06/13 03:59:04 1.39 +++ libeio/eio.c 2009/06/13 14:58:33 1.40 @@ -1070,7 +1070,7 @@ { int min = 0; - for (i = size > EIO_QSORT_SKIP ? EIO_QSORT_CUTOFF : size; --i; ) + for (i = size > EIO_QSORT_SKIP ? EIO_QSORT_CUTOFF + 1 : size; --i; ) if (EIO_DENT_CMP (dents [i], <, dents [min])) min = i; @@ -1086,7 +1086,10 @@ eio_dirent value = dents [i]; for (j = i - 1; EIO_DENT_CMP (dents [j], >, value); --j) + { + assert (j >= 0); dents [j + 1] = dents [j]; + } dents [j + 1] = value; }