* PHP-7.4:
Check update constant failure in ReflectionClassConstant::__toString()
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) {
--- /dev/null
-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