summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBob Weinand <bobwei9@hotmail.com>2015-08-08 00:02:49 +0200
committerBob Weinand <bobwei9@hotmail.com>2015-08-08 00:02:49 +0200
commitb7aac1f5f2d1f072fa52b0bbedce1ac7d20ae789 (patch)
tree8f696c5efd33cf013616db4f64c967ba00b825a8
parentcc53406747b99fec9518c71aee25161c156af1f1 (diff)
downloadphp-git-b7aac1f5f2d1f072fa52b0bbedce1ac7d20ae789.tar.gz
Fixed bug #70208 (Assert breaking access on objects)
-rw-r--r--NEWS3
-rw-r--r--Zend/tests/assert/bug70208.phpt23
-rw-r--r--ext/standard/assert.c3
3 files changed, 28 insertions, 1 deletions
diff --git a/NEWS b/NEWS
index 0908a2db95..22371a511d 100644
--- a/NEWS
+++ b/NEWS
@@ -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 {