diff options
author | Xinchen Hui <laruence@php.net> | 2014-11-10 13:47:14 +0800 |
---|---|---|
committer | Xinchen Hui <laruence@php.net> | 2014-11-10 13:47:14 +0800 |
commit | b9e44888c0a50252a2f155f16b0f9646d5a5e96e (patch) | |
tree | 5eb3bf3090364f9c9578bd781c7931ba94fc4407 /Zend | |
parent | e6581d52cc12664c2c9d470a32848c9b0bae8217 (diff) | |
parent | ab849392549c41fd3fc3d6ed2a324688f2afe47d (diff) | |
download | php-git-b9e44888c0a50252a2f155f16b0f9646d5a5e96e.tar.gz |
Merge branch 'PHP-5.5' into PHP-5.6
Diffstat (limited to 'Zend')
-rw-r--r-- | Zend/tests/bug68370.phpt | 18 | ||||
-rw-r--r-- | Zend/zend_execute_API.c | 7 |
2 files changed, 18 insertions, 7 deletions
diff --git a/Zend/tests/bug68370.phpt b/Zend/tests/bug68370.phpt new file mode 100644 index 0000000000..25589bf455 --- /dev/null +++ b/Zend/tests/bug68370.phpt @@ -0,0 +1,18 @@ +--TEST-- +Bug #68370 "unset($this)" can make the program crash +--FILE-- +<?php +class C { + public function test() { + unset($this); + return get_defined_vars(); + } +} +$c = new C(); +$x = $c->test(); +print_r($x); +unset($c, $x); +--EXPECTF-- +Array +( +) diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c index 243da3fde1..ef4835f9af 100644 --- a/Zend/zend_execute_API.c +++ b/Zend/zend_execute_API.c @@ -1656,13 +1656,6 @@ ZEND_API void zend_rebuild_symbol_table(TSRMLS_D) /* {{{ */ /*printf("Cache miss! Initialized %x\n", EG(active_symbol_table));*/ } ex->symbol_table = EG(active_symbol_table); - - if (ex->op_array->this_var != -1 && - !*EX_CV_NUM(ex, ex->op_array->this_var) && - EG(This)) { - *EX_CV_NUM(ex, ex->op_array->this_var) = (zval**)EX_CV_NUM(ex, ex->op_array->last_var + ex->op_array->this_var); - **EX_CV_NUM(ex, ex->op_array->this_var) = EG(This); - } for (i = 0; i < ex->op_array->last_var; i++) { if (*EX_CV_NUM(ex, i)) { zend_hash_quick_update(EG(active_symbol_table), |