jani            Wed Oct 31 13:23:07 2007 UTC

  Added files:                 (Branch: PHP_5_2)
    /php-src/ext/standard/tests/file    bug43137.phpt 

  Modified files:              
    /php-src    NEWS 
    /php-src/ext/openssl        openssl.c 
    /php-src/ext/standard       filestat.c php_filestat.h 
    /php-src/ext/standard/tests/file    005_basic.phpt 005_error.phpt 
    /php-src/main/streams       plain_wrapper.c 
  Log:
  MFH: - Fixed Bug #43137 (rmdir() and rename() do not clear statcache)
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.992&r2=1.2027.2.547.2.993&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.992 php-src/NEWS:1.2027.2.547.2.993
--- php-src/NEWS:1.2027.2.547.2.992     Wed Oct 31 12:58:24 2007
+++ php-src/NEWS        Wed Oct 31 13:23:05 2007
@@ -3,6 +3,7 @@
 ?? ??? 2007, PHP 5.2.5RC2
 - Added ability to control memory consumption between request using
   ZEND_MM_COMPACT environment variable. (Dmitry)
+- Fixed bug #43137 (rmdir() and rename() do not clear statcache). (Jani)
 
 18 Oct 2007, PHP 5.2.5RC1
 - Upgraded PCRE to version 7.3 (Nuno)
http://cvs.php.net/viewvc.cgi/php-src/ext/openssl/openssl.c?r1=1.98.2.5.2.41&r2=1.98.2.5.2.42&diff_format=u
Index: php-src/ext/openssl/openssl.c
diff -u php-src/ext/openssl/openssl.c:1.98.2.5.2.41 
php-src/ext/openssl/openssl.c:1.98.2.5.2.42
--- php-src/ext/openssl/openssl.c:1.98.2.5.2.41 Wed Aug  8 06:29:46 2007
+++ php-src/ext/openssl/openssl.c       Wed Oct 31 13:23:06 2007
@@ -20,7 +20,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: openssl.c,v 1.98.2.5.2.41 2007/08/08 06:29:46 pajoye Exp $ */
+/* $Id: openssl.c,v 1.98.2.5.2.42 2007/10/31 13:23:06 jani Exp $ */
 
 #ifdef HAVE_CONFIG_H
 #include "config.h"
@@ -46,6 +46,9 @@
 #include <openssl/ssl.h>
 #include <openssl/pkcs12.h>
 
+/* Common */
+#include <time.h>
+
 #define DEFAULT_KEY_LENGTH     512
 #define MIN_KEY_LENGTH         384
 
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/filestat.c?r1=1.136.2.8.2.14&r2=1.136.2.8.2.15&diff_format=u
Index: php-src/ext/standard/filestat.c
diff -u php-src/ext/standard/filestat.c:1.136.2.8.2.14 
php-src/ext/standard/filestat.c:1.136.2.8.2.15
--- php-src/ext/standard/filestat.c:1.136.2.8.2.14      Fri Sep 21 14:05:18 2007
+++ php-src/ext/standard/filestat.c     Wed Oct 31 13:23:06 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: filestat.c,v 1.136.2.8.2.14 2007/09/21 14:05:18 tony2001 Exp $ */
+/* $Id: filestat.c,v 1.136.2.8.2.15 2007/10/31 13:23:06 jani Exp $ */
 
 #include "php.h"
 #include "safe_mode.h"
@@ -698,14 +698,10 @@
 /* }}} */
 #endif
 
-/* {{{ proto void clearstatcache(void)
-   Clear file stat cache */
-PHP_FUNCTION(clearstatcache)
+/* {{{ php_clear_stat_cache()
+*/
+PHPAPI void php_clear_stat_cache(TSRMLS_D)
 {
-       if (ZEND_NUM_ARGS()) {
-               WRONG_PARAM_COUNT;
-       }
-
        if (BG(CurrentStatFile)) {
                efree(BG(CurrentStatFile));
                BG(CurrentStatFile) = NULL;
@@ -718,6 +714,17 @@
 }
 /* }}} */
 
+/* {{{ proto void clearstatcache(void)
+   Clear file stat cache */
+PHP_FUNCTION(clearstatcache)
+{
+       if (ZEND_NUM_ARGS()) {
+               WRONG_PARAM_COUNT;
+       }
+       php_clear_stat_cache(TSRMLS_C);
+}
+/* }}} */
+
 #define IS_LINK_OPERATION(__t) ((__t) == FS_TYPE || (__t) == FS_IS_LINK || 
(__t) == FS_LSTAT)
 #define IS_EXISTS_CHECK(__t) ((__t) == FS_EXISTS  || (__t) == FS_IS_W || (__t) 
== FS_IS_R || (__t) == FS_IS_X || (__t) == FS_IS_FILE || (__t) == FS_IS_DIR || 
(__t) == FS_IS_LINK)
 #define IS_ABLE_CHECK(__t) ((__t) == FS_IS_R || (__t) == FS_IS_W || (__t) == 
FS_IS_X)
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/php_filestat.h?r1=1.24.2.4.2.1&r2=1.24.2.4.2.2&diff_format=u
Index: php-src/ext/standard/php_filestat.h
diff -u php-src/ext/standard/php_filestat.h:1.24.2.4.2.1 
php-src/ext/standard/php_filestat.h:1.24.2.4.2.2
--- php-src/ext/standard/php_filestat.h:1.24.2.4.2.1    Mon Jan  1 09:36:08 2007
+++ php-src/ext/standard/php_filestat.h Wed Oct 31 13:23:06 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
 */
 
-/* $Id: php_filestat.h,v 1.24.2.4.2.1 2007/01/01 09:36:08 sebastian Exp $ */
+/* $Id: php_filestat.h,v 1.24.2.4.2.2 2007/10/31 13:23:06 jani Exp $ */
 
 #ifndef PHP_FILESTAT_H
 #define PHP_FILESTAT_H
@@ -87,6 +87,7 @@
 typedef int php_stat_len;
 #endif
 
+PHPAPI void php_clear_stat_cache(TSRMLS_D);
 PHPAPI void php_stat(const char *filename, php_stat_len filename_length, int 
type, zval *return_value TSRMLS_DC);
 
 /* Switches for various filestat functions: */
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/005_basic.phpt?r1=1.1.2.1&r2=1.1.2.2&diff_format=u
Index: php-src/ext/standard/tests/file/005_basic.phpt
diff -u php-src/ext/standard/tests/file/005_basic.phpt:1.1.2.1 
php-src/ext/standard/tests/file/005_basic.phpt:1.1.2.2
--- php-src/ext/standard/tests/file/005_basic.phpt:1.1.2.1      Mon Jun 11 
16:14:59 2007
+++ php-src/ext/standard/tests/file/005_basic.phpt      Wed Oct 31 13:23:06 2007
@@ -1,5 +1,5 @@
 --TEST--
-Test fileatime(),filemtime(),filectime() & touch() functions : basic 
functionality
+Test fileatime(), filemtime(), filectime() & touch() functions : basic 
functionality
 --FILE--
 <?php
 /*
http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/005_error.phpt?r1=1.1.2.1&r2=1.1.2.2&diff_format=u
Index: php-src/ext/standard/tests/file/005_error.phpt
diff -u php-src/ext/standard/tests/file/005_error.phpt:1.1.2.1 
php-src/ext/standard/tests/file/005_error.phpt:1.1.2.2
--- php-src/ext/standard/tests/file/005_error.phpt:1.1.2.1      Mon Jun 11 
16:14:59 2007
+++ php-src/ext/standard/tests/file/005_error.phpt      Wed Oct 31 13:23:06 2007
@@ -1,5 +1,5 @@
 --TEST--
-Test fileatime(), filemtime(), filectime() & touch() functions: error 
conditions 
+Test fileatime(), filemtime(), filectime() & touch() functions : error 
conditions 
 --FILE--
 <?php
 /*
http://cvs.php.net/viewvc.cgi/php-src/main/streams/plain_wrapper.c?r1=1.52.2.6.2.23&r2=1.52.2.6.2.24&diff_format=u
Index: php-src/main/streams/plain_wrapper.c
diff -u php-src/main/streams/plain_wrapper.c:1.52.2.6.2.23 
php-src/main/streams/plain_wrapper.c:1.52.2.6.2.24
--- php-src/main/streams/plain_wrapper.c:1.52.2.6.2.23  Wed Jul 25 16:34:05 2007
+++ php-src/main/streams/plain_wrapper.c        Wed Oct 31 13:23:07 2007
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: plain_wrapper.c,v 1.52.2.6.2.23 2007/07/25 16:34:05 dmitry Exp $ */
+/* $Id: plain_wrapper.c,v 1.52.2.6.2.24 2007/10/31 13:23:07 jani Exp $ */
 
 #include "php.h"
 #include "php_globals.h"
@@ -24,6 +24,7 @@
 #include "php_open_temporary_file.h"
 #include "ext/standard/file.h"
 #include "ext/standard/flock_compat.h"
+#include "ext/standard/php_filestat.h"
 #include <stddef.h>
 #include <fcntl.h>
 #if HAVE_SYS_WAIT_H
@@ -1032,12 +1033,10 @@
                }
                return 0;
        }
+
        /* Clear stat cache */
-       ZVAL_STRINGL(&funcname, "clearstatcache", sizeof("clearstatcache")-1, 
0);
-       call_user_function_ex(CG(function_table), NULL, &funcname, &retval, 0, 
NULL, 0, NULL TSRMLS_CC);
-       if (retval) {
-               zval_ptr_dtor(&retval);
-       }
+       php_clear_stat_cache(TSRMLS_C);
+
        return 1;
 }
 
@@ -1107,6 +1106,9 @@
         return 0;
        }
 
+       /* Clear stat cache */
+       php_clear_stat_cache(TSRMLS_C);
+
        return 1;
 }
 
@@ -1151,7 +1153,7 @@
                }
                else {
                        /* find a top level directory we need to create */
-                       while ( (p = strrchr(buf + offset, DEFAULT_SLASH)) || ( 
offset !=1 && (p = strrchr(buf, DEFAULT_SLASH))) ) {
+                       while ( (p = strrchr(buf + offset, DEFAULT_SLASH)) || 
(offset != 1 && (p = strrchr(buf, DEFAULT_SLASH))) ) {
                                int n = 0;
 
                                *p = '\0';
@@ -1218,6 +1220,9 @@
                return 0;
        }
 
+       /* Clear stat cache */
+       php_clear_stat_cache(TSRMLS_C);
+
        return 1;
 }
 
@@ -1412,9 +1417,6 @@
 }
 /* }}} */
 
-
-
-
 /*
  * Local variables:
  * tab-width: 4

http://cvs.php.net/viewvc.cgi/php-src/ext/standard/tests/file/bug43137.phpt?view=markup&rev=1.1
Index: php-src/ext/standard/tests/file/bug43137.phpt
+++ php-src/ext/standard/tests/file/bug43137.phpt
--TEST--
Bug #43137 (rmdir() and rename() do not clear statcache)
--FILE--
<?php
        $toname = "TO_" . md5(microtime());
        $dirname = "FROM_" . md5(microtime());

        mkdir($dirname);
        var_dump(is_dir($dirname)); // Expected: true
        rename($dirname, $toname);
        var_dump(is_dir($dirname)); // Expected: false
        var_dump(is_dir($toname)); // Expected: true
        rmdir($toname);
        var_dump(is_dir($toname)); // Expected: false
?>
--EXPECT--
bool(true)
bool(false)
bool(true)
bool(false)

-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to