]> granicus.if.org Git - php/commitdiff
More constant related fixes
authorDmitry Stogov <dmitry@zend.com>
Mon, 24 Feb 2014 11:49:15 +0000 (15:49 +0400)
committerDmitry Stogov <dmitry@zend.com>
Mon, 24 Feb 2014 11:49:15 +0000 (15:49 +0400)
Zend/zend_compile.c
Zend/zend_execute_API.c

index d74d0f7844043fc6e8e9ae86b0169b0710dd6412..c6136e2533a3190bb7c617686ac16b077ac2b91d 100644 (file)
@@ -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);
index 1a074434dfbdde8a93807a1206b3db8b498ae3f2..28938e59dae9dfacebcf70f4e73ec8efc3944f8b 100644 (file)
@@ -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);