]> granicus.if.org Git - php/commitdiff
Fixed constant name construction
authorDmitry Stogov <dmitry@zend.com>
Fri, 21 Feb 2014 20:20:57 +0000 (00:20 +0400)
committerDmitry Stogov <dmitry@zend.com>
Fri, 21 Feb 2014 20:20:57 +0000 (00:20 +0400)
Zend/zend_constants.c

index 04162c8b70bb2bc13ccbdda0fee525c81ca12dbe..cf9802b498d953bc3144fa9a9d7d36d300045feb 100644 (file)
@@ -398,7 +398,7 @@ ZEND_API int zend_get_constant_ex(const char *name, uint name_len, zval *result,
                } else {
                        /* try lowercase */
                        zend_str_tolower(lcname->val + prefix_len + 1, const_name_len);
-                       lcname->h = 0; // reuse ???
+                       STR_FORGET_HASH_VAL(lcname);
                        if ((c = zend_hash_find_ptr(EG(zend_constants), lcname)) != NULL) {
                                if ((c->flags & CONST_CS) == 0) {
                                        found_const = 1;
@@ -478,8 +478,8 @@ ZEND_API int zend_register_constant(zend_constant *c TSRMLS_DC)
        } else {
                char *slash = strrchr(c->name->val, '\\');
                if (slash) {
-                       lowercase_name = STR_ALLOC(c->name->len, c->flags & CONST_PERSISTENT);
-                       zend_str_tolower_copy(lowercase_name->val, c->name->val, c->name->len);
+                       lowercase_name = STR_INIT(c->name->val, c->name->len, c->flags & CONST_PERSISTENT);
+                       zend_str_tolower(lowercase_name->val, slash - c->name->val);
                        lowercase_name = zend_new_interned_string(lowercase_name TSRMLS_CC);
                        name = lowercase_name;
                } else {