summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitry Stogov <dmitry@zend.com>2014-02-24 15:49:15 +0400
committerDmitry Stogov <dmitry@zend.com>2014-02-24 15:49:15 +0400
commit595fc4d901cbb69d2d4fe46508b7303ac62428b8 (patch)
tree222a9779172ce4969dd4f0703399e26b67acd272
parentabb57cc1c2a92e6bb4f6cc732521163b8d9a8e4f (diff)
downloadphp-git-595fc4d901cbb69d2d4fe46508b7303ac62428b8.tar.gz
More constant related fixes
-rw-r--r--Zend/zend_compile.c3
-rw-r--r--Zend/zend_execute_API.c6
2 files changed, 6 insertions, 3 deletions
diff --git a/Zend/zend_compile.c b/Zend/zend_compile.c
index d74d0f7844..c6136e2533 100644
--- a/Zend/zend_compile.c
+++ b/Zend/zend_compile.c
@@ -5890,6 +5890,9 @@ void zend_do_add_static_array_element(znode *result, znode *offset, const znode
case IS_CONSTANT:
//??? /* Ugly hack to denote that this value has a constant index */
Z_STR(offset->u.constant)->gc.u.v.flags |= IS_STR_CONSTANT;
+ if (Z_TYPE(offset->u.constant) & IS_CONSTANT_UNQUALIFIED) {
+ Z_STR(offset->u.constant)->gc.u.v.flags |= IS_STR_CONSTANT_UNQUALIFIED;
+ }
//??? Z_TYPE(element) |= IS_CONSTANT_INDEX;
//??? Z_STRVAL(offset->u.constant) = erealloc(Z_STRVAL(offset->u.constant), Z_STRLEN(offset->u.constant)+3);
//??? Z_STRVAL(offset->u.constant)[Z_STRLEN(offset->u.constant)+1] = Z_TYPE(offset->u.constant);
diff --git a/Zend/zend_execute_API.c b/Zend/zend_execute_API.c
index 1a074434df..28938e59da 100644
--- a/Zend/zend_execute_API.c
+++ b/Zend/zend_execute_API.c
@@ -585,7 +585,7 @@ ZEND_API int zval_update_constant_ex(zval *p, void *arg, zend_class_entry *scope
zend_ast_evaluate(&const_value, (zend_ast *)str_index->val, scope TSRMLS_CC);
zend_ast_destroy((zend_ast *)str_index->val);
//???
- } else if (!zend_get_constant_ex(str_index->val, str_index->len, &const_value, scope, 0 /*???str_index[str_index_len - 2]*/ TSRMLS_CC)) {
+ } else if (!zend_get_constant_ex(str_index->val, str_index->len, &const_value, scope, str_index->gc.u.v.flags TSRMLS_CC)) {
char *actual, *str;
const char *save = str_index->val;
int len;
@@ -611,10 +611,10 @@ ZEND_API int zval_update_constant_ex(zval *p, void *arg, zend_class_entry *scope
if (save[0] == '\\') {
++save;
}
- if (str_index->gc.u.v.flags & IS_STR_CONSTANT_UNQUALIFIED) {
+ if (!(str_index->gc.u.v.flags & IS_STR_CONSTANT_UNQUALIFIED)) {
zend_error(E_ERROR, "Undefined constant '%s'", save);
}
- zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", str_index, str_index);
+ zend_error(E_NOTICE, "Use of undefined constant %s - assumed '%s'", str, str);
}
if (str == str_index->val && len == str_index->len) {
ZVAL_STR(&const_value, str_index);