]> granicus.if.org Git - php/commitdiff
Merge branch 'PHP-5.4' into PHP-5.5
authorDmitry Stogov <dmitry@zend.com>
Mon, 18 Feb 2013 12:20:49 +0000 (16:20 +0400)
committerDmitry Stogov <dmitry@zend.com>
Mon, 18 Feb 2013 12:20:49 +0000 (16:20 +0400)
* PHP-5.4:
  Fixed bug #64070 (Inheritance with Traits failed with error)

Conflicts:
NEWS
Zend/zend_compile.c

1  2 
Zend/zend_compile.c

index 1a8d10890060bbe58bdc7e56ffb02015533fb48e,a3f4fe5dd606307be45c532225f1bf9c142633b3..701151106ab5362ee234b883c2514bda8204090e
@@@ -3974,8 -3785,8 +3974,8 @@@ static int zend_traits_copy_functions(z
        ce            = va_arg(args, zend_class_entry*);
        overriden     = va_arg(args, HashTable**);
        exclude_table = va_arg(args, HashTable*);
 -      
 +
-       fnname_len = strlen(fn->common.function_name);
+       fnname_len = hash_key->nKeyLength - 1;
  
        /* apply aliases which are qualified with a class name, there should not be any ambiguity */
        if (ce->trait_aliases) {
                        if (alias->alias != NULL
                                && (!alias->trait_method->ce || fn->common.scope == alias->trait_method->ce)
                                && alias->trait_method->mname_len == fnname_len
-                               && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, fn->common.function_name, fnname_len) == 0)) {
+                               && (zend_binary_strcasecmp(alias->trait_method->method_name, alias->trait_method->mname_len, hash_key->arKey, fnname_len) == 0)) {
                                fn_copy = *fn;
 -                                      
 +
                                /* if it is 0, no modifieres has been changed */
 -                              if (alias->modifiers) { 
 +                              if (alias->modifiers) {
                                        fn_copy.common.fn_flags = alias->modifiers | (fn->common.fn_flags ^ (fn->common.fn_flags & ZEND_ACC_PPP_MASK));
                                }