moriyoshi               Sun Oct 26 11:10:08 2003 EDT

  Added files:                 (Branch: PHP_4_3)
    /php-src/tests/lang overload_leak.phpt 

  Modified files:              
    /php-src/ext/overload       overload.c 
  Log:
  Prevent leaks in the overload extension that occur in some special cases.
  
  
Index: php-src/ext/overload/overload.c
diff -u php-src/ext/overload/overload.c:1.20.2.3 
php-src/ext/overload/overload.c:1.20.2.4
--- php-src/ext/overload/overload.c:1.20.2.3    Tue Apr 15 00:14:21 2003
+++ php-src/ext/overload/overload.c     Sun Oct 26 11:10:05 2003
@@ -580,18 +580,16 @@
                }
 
                if (zval_is_true(retval)) {
-                       *return_value = *result_ptr;
-                       INIT_PZVAL(return_value);
+                       REPLACE_ZVAL_VALUE(&return_value, result_ptr, 1);
                } else {
                        zval_dtor(result_ptr);
                        php_error(E_WARNING, "Call to undefined method %s::%s()", 
Z_OBJCE_P(object)->name, Z_STRVAL(method_name));
                }
                zval_ptr_dtor(&retval);
        } else {
-               ZVAL_STRINGL(&call_handler, Z_STRVAL(method->element), 
Z_STRLEN(method->element), 0);
                call_result = call_user_function_ex(NULL,
                                                                                       
 &object,
-                                                                                      
 &call_handler,
+                                                                                      
 &method->element,
                                                                                       
 &retval,
                                                                                       
 ZEND_NUM_ARGS(), args,
                                                                                       
 0, NULL TSRMLS_CC);
@@ -602,8 +600,7 @@
                        return;
                }
 
-               *return_value = *retval;
-               zval_copy_ctor(return_value);
+               REPLACE_ZVAL_VALUE(&return_value, retval, 1);
                zval_ptr_dtor(&retval);
        }
        

Index: php-src/tests/lang/overload_leak.phpt
+++ php-src/tests/lang/overload_leak.phpt

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

Reply via email to