com php-src: Fix autoload_func_info destruction: ext/ spl/php_spl.c
| From: | Nikita Popov | Date: | Thu, 16 Feb 2017 15:59:17 +0000 |
| Subject: | com php-src: Fix autoload_func_info destruction: ext/ spl/php_spl.c | ||
| Groups: | php.cvs | ||
| Request: | Send a blank email to php-cvs+get-97123@lists.php.net to get a copy of this message | ||
Commit: 708973c9bd4a34482d3d6b2921d4b9b1339bddf0
Author: Nikita Popov <nikita.ppv@gmail.com> Thu, 16 Feb 2017 16:59:17 +0100
Parents: 3b91ed112ff06d6b38a6db9e28649f2b79b40cad
Branches: PHP-7.0 PHP-7.1 master
Link: http://git.php.net/?p=php-src.git;a=commitdiff;h=708973c9bd4a34482d3d6b2921d4b9b1339bddf0
Log:
Fix autoload_func_info destruction
Can't reference the function ptr after the closure has been
destroyed.
Changed paths:
M ext/spl/php_spl.c
Diff:
diff --git a/ext/spl/php_spl.c b/ext/spl/php_spl.c
index aab10e5..b8e10a5 100644
--- a/ext/spl/php_spl.c
+++ b/ext/spl/php_spl.c
@@ -378,14 +378,14 @@ static void autoload_func_info_dtor(zval *element)
if (!Z_ISUNDEF(alfi->obj)) {
zval_ptr_dtor(&alfi->obj);
}
- if (!Z_ISUNDEF(alfi->closure)) {
- zval_ptr_dtor(&alfi->closure);
- }
if (alfi->func_ptr &&
UNEXPECTED(alfi->func_ptr->common.fn_flags & ZEND_ACC_CALL_VIA_TRAMPOLINE)) {
zend_string_release(alfi->func_ptr->common.function_name);
zend_free_trampoline(alfi->func_ptr);
}
+ if (!Z_ISUNDEF(alfi->closure)) {
+ zval_ptr_dtor(&alfi->closure);
+ }
efree(alfi);
}