felipe                                   Mon, 20 Jun 2011 01:36:23 +0000

Revision: http://svn.php.net/viewvc?view=revision&revision=312321

Log:
- Simplify function code

Changed paths:
    U   php/php-src/branches/PHP_5_4/Zend/zend_compile.c
    U   php/php-src/trunk/Zend/zend_compile.c

Modified: php/php-src/branches/PHP_5_4/Zend/zend_compile.c
===================================================================
--- php/php-src/branches/PHP_5_4/Zend/zend_compile.c    2011-06-20 01:21:47 UTC 
(rev 312320)
+++ php/php-src/branches/PHP_5_4/Zend/zend_compile.c    2011-06-20 01:36:23 UTC 
(rev 312321)
@@ -3769,27 +3769,28 @@
 /* }}} */

 static void zend_traits_compile_exclude_table(HashTable* exclude_table, 
zend_trait_precedence **precedences, zend_class_entry *trait) {
-       size_t i, j;
-       if (precedences) {
-               i = 0;
-               while (precedences[i]) {
-                       if (precedences[i]->exclude_from_classes) {
-                               j = 0;
-                               while (precedences[i]->exclude_from_classes[j]) 
{
-                                       if 
(precedences[i]->exclude_from_classes[j] == trait) {
-                                               zend_uint lcname_len = 
precedences[i]->trait_method->mname_len;
-                                               char* lcname = 
zend_str_tolower_dup(precedences[i]->trait_method->method_name,
-                                                                               
                                                                                
                                lcname_len);
-                                               if 
(zend_hash_add(exclude_table, lcname, lcname_len, NULL, 0, NULL)==FAILURE) {
-                                                       
zend_error(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method 
of trait %s was defined to be excluded multiple times", 
precedences[i]->trait_method->method_name, trait->name);
-                                               }
+       size_t i = 0, j;
+
+       if (!precedences) {
+               return;
+       }
+       while (precedences[i]) {
+               if (precedences[i]->exclude_from_classes) {
+                       j = 0;
+                       while (precedences[i]->exclude_from_classes[j]) {
+                               if (precedences[i]->exclude_from_classes[j] == 
trait) {
+                                       zend_uint lcname_len = 
precedences[i]->trait_method->mname_len;
+                                       char *lcname = 
zend_str_tolower_dup(precedences[i]->trait_method->method_name, lcname_len);
+                                       if (zend_hash_add(exclude_table, 
lcname, lcname_len, NULL, 0, NULL) == FAILURE) {
                                                efree(lcname);
+                                               zend_error(E_COMPILE_ERROR, 
"Failed to evaluate a trait precedence (%s). Method of trait %s was defined to 
be excluded multiple times", precedences[i]->trait_method->method_name, 
trait->name);
                                        }
-                                       j++;
+                                       efree(lcname);
                                }
+                               ++j;
                        }
-                       i++;
                }
+               ++i;
        }
 }


Modified: php/php-src/trunk/Zend/zend_compile.c
===================================================================
--- php/php-src/trunk/Zend/zend_compile.c       2011-06-20 01:21:47 UTC (rev 
312320)
+++ php/php-src/trunk/Zend/zend_compile.c       2011-06-20 01:36:23 UTC (rev 
312321)
@@ -3769,27 +3769,28 @@
 /* }}} */

 static void zend_traits_compile_exclude_table(HashTable* exclude_table, 
zend_trait_precedence **precedences, zend_class_entry *trait) {
-       size_t i, j;
-       if (precedences) {
-               i = 0;
-               while (precedences[i]) {
-                       if (precedences[i]->exclude_from_classes) {
-                               j = 0;
-                               while (precedences[i]->exclude_from_classes[j]) 
{
-                                       if 
(precedences[i]->exclude_from_classes[j] == trait) {
-                                               zend_uint lcname_len = 
precedences[i]->trait_method->mname_len;
-                                               char* lcname = 
zend_str_tolower_dup(precedences[i]->trait_method->method_name,
-                                                                               
                                                                                
                                lcname_len);
-                                               if 
(zend_hash_add(exclude_table, lcname, lcname_len, NULL, 0, NULL)==FAILURE) {
-                                                       
zend_error(E_COMPILE_ERROR, "Failed to evaluate a trait precedence (%s). Method 
of trait %s was defined to be excluded multiple times", 
precedences[i]->trait_method->method_name, trait->name);
-                                               }
+       size_t i = 0, j;
+
+       if (!precedences) {
+               return;
+       }
+       while (precedences[i]) {
+               if (precedences[i]->exclude_from_classes) {
+                       j = 0;
+                       while (precedences[i]->exclude_from_classes[j]) {
+                               if (precedences[i]->exclude_from_classes[j] == 
trait) {
+                                       zend_uint lcname_len = 
precedences[i]->trait_method->mname_len;
+                                       char *lcname = 
zend_str_tolower_dup(precedences[i]->trait_method->method_name, lcname_len);
+                                       if (zend_hash_add(exclude_table, 
lcname, lcname_len, NULL, 0, NULL) == FAILURE) {
                                                efree(lcname);
+                                               zend_error(E_COMPILE_ERROR, 
"Failed to evaluate a trait precedence (%s). Method of trait %s was defined to 
be excluded multiple times", precedences[i]->trait_method->method_name, 
trait->name);
                                        }
-                                       j++;
+                                       efree(lcname);
                                }
+                               ++j;
                        }
-                       i++;
                }
+               ++i;
        }
 }


-- 
PHP CVS Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Reply via email to