Bläddra i källkod

LibC: closedir() should free the readdir() buffer and the DIR itself.

Andreas Kling 6 år sedan
förälder
incheckning
8ae7be611a
1 ändrade filer med 3 tillägg och 0 borttagningar
  1. 3 0
      LibC/dirent.cpp

+ 3 - 0
LibC/dirent.cpp

@@ -26,9 +26,12 @@ int closedir(DIR* dirp)
 {
 {
     if (!dirp || dirp->fd == -1)
     if (!dirp || dirp->fd == -1)
         return -EBADF;
         return -EBADF;
+    if (dirp->buffer)
+        free(dirp->buffer);
     int rc = close(dirp->fd);
     int rc = close(dirp->fd);
     if (rc == 0)
     if (rc == 0)
         dirp->fd = -1;
         dirp->fd = -1;
+    free(dirp);
     return rc;
     return rc;
 }
 }