]> granicus.if.org Git - php/commitdiff
fix #7573
authorThies C. Arntzen <thies@php.net>
Sat, 4 Nov 2000 14:58:50 +0000 (14:58 +0000)
committerThies C. Arntzen <thies@php.net>
Sat, 4 Nov 2000 14:58:50 +0000 (14:58 +0000)
closedir() now really close the directory - used to stay open 'cause the
default-directory resource was "remembered" for arg-less calls.

ext/standard/dir.c

index 0ad886cb4f4c4f75b6516c5d1aadd27e4eef32e1..5ac26e721b5726eb1b743ed9eeb5fa93e844837a 100644 (file)
@@ -102,8 +102,12 @@ static void php_set_default_dir(int id DIRLS_DC)
     if (DIRG(default_dir)!=-1) {
         zend_list_delete(DIRG(default_dir));
     }
-    DIRG(default_dir) = id;
-    zend_list_addref(id);
+
+       if (id != -1) {
+               zend_list_addref(id);
+       }
+       
+       DIRG(default_dir) = id;
 }
 
 
@@ -211,6 +215,10 @@ PHP_FUNCTION(closedir)
        FETCH_DIRP();
 
        zend_list_delete(dirp->id);
+
+       if (dirp->id == DIRG(default_dir)) {
+               php_set_default_dir(-1);
+       }
 }
 
 /* }}} */