summaryrefslogtreecommitdiff
path: root/Zend
diff options
context:
space:
mode:
authorXinchen Hui <laruence@php.net>2014-11-10 13:47:14 +0800
committerXinchen Hui <laruence@php.net>2014-11-10 13:47:14 +0800
commitb9e44888c0a50252a2f155f16b0f9646d5a5e96e (patch)
tree5eb3bf3090364f9c9578bd781c7931ba94fc4407 /Zend
parente6581d52cc12664c2c9d470a32848c9b0bae8217 (diff)
parentab849392549c41fd3fc3d6ed2a324688f2afe47d (diff)
downloadphp-git-b9e44888c0a50252a2f155f16b0f9646d5a5e96e.tar.gz
Merge branch 'PHP-5.5' into PHP-5.6
Diffstat (limited to 'Zend')
-rw-r--r--Zend/tests/bug68370.phpt18
-rw-r--r--Zend/zend_execute_API.c7
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),