--- /dev/null
+--TEST--
+String interning during constants substitution
+--INI--
+opcache.enable_cli=0
+--FILE--
+<?php
+define ("A", "." . ord(26) . ".");
+eval("class A {const a = A;}");
+var_dump(A::a);
+?>
+--EXPECT--
+string(4) ".50."
}
zend_const_expr_to_zval(&value_zv, value_ast);
- if (Z_TYPE(value_zv) == IS_STRING) {
+ if (Z_TYPE(value_zv) == IS_STRING && !ZSTR_IS_INTERNED(Z_STR(value_zv))) {
+ SEPARATE_STRING(&value_zv);
zval_make_interned_string(&value_zv);
}
zend_declare_class_constant_ex(ce, name, &value_zv, ast->attr, doc_comment);