fix crash on read returning -1 Reference: /n/atom/patch/applied/dirreadcrash Date: Fri Mar 21 00:12:10 CET 2014 Signed-off-by: quanstro@quanstro.net --- /sys/src/libc/9sys/dirread.c Fri Mar 21 00:12:10 2014 +++ /sys/src/libc/9sys/dirread.c Fri Mar 21 00:12:10 2014 @@ -11,7 +11,7 @@ *d = nil; if(ts <= 0) - return 0; + return ts; /* * first find number of all stats, check they look like stats, & size all associated strings @@ -62,8 +62,7 @@ if(buf == nil) return -1; ts = read(fd, buf, DIRMAX); - if(ts >= 0) - ts = dirpackage(buf, ts, d); + ts = dirpackage(buf, ts, d); free(buf); if(*d != nil) setmalloctag(*d, getcallerpc(&fd)); @@ -90,8 +89,7 @@ break; ts += n; } - if(ts >= 0) - ts = dirpackage(buf, ts, d); + ts = dirpackage(buf, ts, d); free(buf); if(*d != nil) setmalloctag(*d, getcallerpc(&fd));