]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-7.4'
authorNikita Popov <nikita.ppv@gmail.com>
Mon, 31 Aug 2020 12:50:31 +0000 (14:50 +0200)
committerNikita Popov <nikita.ppv@gmail.com>
Mon, 31 Aug 2020 12:50:40 +0000 (14:50 +0200)
* PHP-7.4:
  Check update constant failure in ReflectionClassConstant::__toString()

1  2 
ext/reflection/php_reflection.c
ext/reflection/tests/ReflectionClassConstant_toString_error.phpt

index 016851e9e54a8c56c412705a0b5138225b789af2,df00e5b4ba24a64a1579fc7e167c2c031d3d1931..f5c2b0f63c0249284adf4ae6ec9f6f5f5f7baf6a
@@@ -555,9 -545,12 +555,12 @@@ static void _const_string(smart_str *st
  static void _class_const_string(smart_str *str, char *name, zend_class_constant *c, char *indent)
  {
        char *visibility = zend_visibility_string(Z_ACCESS_FLAGS(c->value));
 -      char *type;
 +      const char *type;
  
-       zval_update_constant_ex(&c->value, c->ce);
+       if (zval_update_constant_ex(&c->value, c->ce) == FAILURE) {
+               return;
+       }
        type = zend_zval_type_name(&c->value);
  
        if (Z_TYPE(c->value) == IS_ARRAY) {
index 0000000000000000000000000000000000000000,cd4dfa3765c871d995a6a0c7f4076bf5ee149a4a..54290e97aa30a4621a5281f2db9b4ae6dfeed688
mode 000000,100644..100644
--- /dev/null
@@@ -1,0 -1,18 +1,18 @@@
 -Undefined class constant 'self::UNKNOWN'
+ --TEST--
+ Exception thrown while converting ReflectionClassConstant to string
+ --FILE--
+ <?php
+ class B {
+     const X = self::UNKNOWN;
+ }
+ try {
+     echo new ReflectionClassConstant('B', 'X');
+ } catch (Error $e) {
+     echo $e->getMessage(), "\n";
+ }
+ ?>
+ --EXPECT--
++Undefined constant self::UNKNOWN