]> granicus.if.org Git - php/commitdiff
fix leak in zend_disable_class()
authorAntony Dovgal <tony2001@php.net>
Wed, 20 Dec 2006 23:00:54 +0000 (23:00 +0000)
committerAntony Dovgal <tony2001@php.net>
Wed, 20 Dec 2006 23:00:54 +0000 (23:00 +0000)
Zend/zend_API.c

index 7aad13e0b6d89fda0939bbfdc2ded82ba31f60f1..318fe5ffd30c1a318796d0aad95cc7278aecfbad 100644 (file)
@@ -2462,18 +2462,17 @@ static zend_function_entry disabled_class_new[] =  {
 
 ZEND_API int zend_disable_class(char *class_name, uint class_name_length TSRMLS_DC)
 {
-       zend_class_entry *disabled_class;
-       disabled_class = (zend_class_entry *) emalloc(sizeof(zend_class_entry));
+       zend_class_entry disabled_class;
 
        zend_str_tolower(class_name, class_name_length);
        if (zend_hash_del(CG(class_table), class_name, class_name_length+1)==FAILURE) {
                return FAILURE;
        }
-       INIT_CLASS_ENTRY((*disabled_class), class_name, disabled_class_new);
-       disabled_class->create_object = display_disabled_class;
-       disabled_class->name_length = class_name_length;
-       zend_register_internal_class(disabled_class TSRMLS_CC);
-       return 1;
+       INIT_CLASS_ENTRY(disabled_class, class_name, disabled_class_new);
+       disabled_class.create_object = display_disabled_class;
+       disabled_class.name_length = class_name_length;
+       zend_register_internal_class(&disabled_class TSRMLS_CC);
+       return SUCCESS;
 }
 
 static int zend_is_callable_check_func(int check_flags, zval ***zobj_ptr_ptr, zend_class_entry *ce_org, zval *callable, zend_class_entry **ce_ptr, zend_function **fptr_ptr TSRMLS_DC)