dmitry          Wed Jun 24 08:53:18 2009 UTC

  Modified files:              (Branch: PHP_5_3)
    /php-src    NEWS 
    /php-src/ext/spl    spl_directory.c 
  Log:
  Fixed bug #48643 (String functions memory issue)
  
  
http://cvs.php.net/viewvc.cgi/php-src/NEWS?r1=1.2027.2.547.2.965.2.645&r2=1.2027.2.547.2.965.2.646&diff_format=u
Index: php-src/NEWS
diff -u php-src/NEWS:1.2027.2.547.2.965.2.645 
php-src/NEWS:1.2027.2.547.2.965.2.646
--- php-src/NEWS:1.2027.2.547.2.965.2.645       Tue Jun 23 06:56:45 2009
+++ php-src/NEWS        Wed Jun 24 08:53:17 2009
@@ -1,6 +1,7 @@
-PHP                                                                        
NEWS
+PHP                                                                        NEWS
 |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
 ?? ??? 2009, PHP 5.3.0 RC 5
+- Fixed bug #48643 (String functions memory issue). (Dmitry)
 - Fixed bug #48641 (tmpfile() uses old parameter parsing).
   (crrodriguez at opensuse dot org)
 - Fixed bug #48624 (.user.ini never gets parsed). (Pierre)
http://cvs.php.net/viewvc.cgi/php-src/ext/spl/spl_directory.c?r1=1.45.2.27.2.23.2.43&r2=1.45.2.27.2.23.2.44&diff_format=u
Index: php-src/ext/spl/spl_directory.c
diff -u php-src/ext/spl/spl_directory.c:1.45.2.27.2.23.2.43 
php-src/ext/spl/spl_directory.c:1.45.2.27.2.23.2.44
--- php-src/ext/spl/spl_directory.c:1.45.2.27.2.23.2.43 Thu Jun  4 14:46:26 2009
+++ php-src/ext/spl/spl_directory.c     Wed Jun 24 08:53:18 2009
@@ -16,7 +16,7 @@
    +----------------------------------------------------------------------+
  */
 
-/* $Id: spl_directory.c,v 1.45.2.27.2.23.2.43 2009/06/04 14:46:26 colder Exp $ 
*/
+/* $Id: spl_directory.c,v 1.45.2.27.2.23.2.44 2009/06/24 08:53:18 dmitry Exp $ 
*/
 
 #ifdef HAVE_CONFIG_H
 # include "config.h"
@@ -1604,13 +1604,34 @@
                switch (intern->type) {
                case SPL_FS_INFO:
                case SPL_FS_FILE:
-                       ZVAL_STRINGL(writeobj, intern->file_name, 
intern->file_name_len, 1);
+                       if (readobj == writeobj) {
+                               zval retval;
+                               zval *retval_ptr = &retval;
+
+                               ZVAL_STRINGL(retval_ptr, intern->file_name, 
intern->file_name_len, 1);
+                               zval_dtor(readobj);
+                               ZVAL_ZVAL(writeobj, retval_ptr, 0, 0);
+                       } else {
+                               ZVAL_STRINGL(writeobj, intern->file_name, 
intern->file_name_len, 1);
+                       }
                        return SUCCESS;
                case SPL_FS_DIR:
-                       ZVAL_STRING(writeobj, intern->u.dir.entry.d_name, 1);
+                       if (readobj == writeobj) {
+                               zval retval;
+                               zval *retval_ptr = &retval;
+
+                               ZVAL_STRING(retval_ptr, 
intern->u.dir.entry.d_name, 1);
+                               zval_dtor(readobj);
+                               ZVAL_ZVAL(writeobj, retval_ptr, 0, 0);
+                       } else {
+                               ZVAL_STRING(writeobj, 
intern->u.dir.entry.d_name, 1);
+                       }
                        return SUCCESS;
                }
        }
+       if (readobj == writeobj) {
+               zval_dtor(readobj);
+       }
        ZVAL_NULL(writeobj);
        return FAILURE;
 }



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

Reply via email to