diff options
author | Bob Weinand <bobwei9@hotmail.com> | 2015-08-08 00:02:49 +0200 |
---|---|---|
committer | Bob Weinand <bobwei9@hotmail.com> | 2015-08-08 00:02:49 +0200 |
commit | b7aac1f5f2d1f072fa52b0bbedce1ac7d20ae789 (patch) | |
tree | 8f696c5efd33cf013616db4f64c967ba00b825a8 | |
parent | cc53406747b99fec9518c71aee25161c156af1f1 (diff) | |
download | php-git-b7aac1f5f2d1f072fa52b0bbedce1ac7d20ae789.tar.gz |
Fixed bug #70208 (Assert breaking access on objects)
-rw-r--r-- | NEWS | 3 | ||||
-rw-r--r-- | Zend/tests/assert/bug70208.phpt | 23 | ||||
-rw-r--r-- | ext/standard/assert.c | 3 |
3 files changed, 28 insertions, 1 deletions
@@ -2,7 +2,8 @@ PHP NEWS ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||| 20 Aug 2015, PHP 7.0.0 RC 1 - +- Standard: + . Fixed bug #70208 (Assert breaking access on objects). (Bob) 06 Aug 2015, PHP 7.0.0 Beta 3 diff --git a/Zend/tests/assert/bug70208.phpt b/Zend/tests/assert/bug70208.phpt new file mode 100644 index 0000000000..ec9325334c --- /dev/null +++ b/Zend/tests/assert/bug70208.phpt @@ -0,0 +1,23 @@ +--TEST-- +Bug #70208 (scope information must be preserved with assert()) +--FILE-- +<?php + +function non_class_scope() { + return true; +} + +class test { + protected $prop = 1; + + public function __construct() { + assert('non_class_scope();'); + var_dump($this->prop); + } +} + +new test; + +?> +--EXPECT-- +int(1) diff --git a/ext/standard/assert.c b/ext/standard/assert.c index 61dd286d6d..545c099877 100644 --- a/ext/standard/assert.c +++ b/ext/standard/assert.c @@ -164,6 +164,7 @@ PHP_FUNCTION(assert) if (Z_TYPE_P(assertion) == IS_STRING) { zval retval; int old_error_reporting = 0; /* shut up gcc! */ + zend_class_entry *orig_scope = EG(scope); myeval = Z_STRVAL_P(assertion); @@ -193,6 +194,8 @@ PHP_FUNCTION(assert) EG(error_reporting) = old_error_reporting; } + EG(scope) = orig_scope; + convert_to_boolean(&retval); val = Z_TYPE(retval) == IS_TRUE; } else { |