prepare v4.2.5
[m6w6/ext-http] / src / php_http_misc.c
index 064598cea3db9c992f9d1685990fe1178fd537dd..261387f6bd6ffbecb01377d2ef87efe7fd936431 100644 (file)
@@ -50,11 +50,11 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags)
 {
        int result = 0;
 
-       if (!haystack_str || !needle_str) {
+       if (UNEXPECTED(!haystack_str || !needle_str)) {
                return result;
        }
 
-       if (flags & PHP_HTTP_MATCH_FULL) {
+       if (UNEXPECTED(flags & PHP_HTTP_MATCH_FULL)) {
                if (flags & PHP_HTTP_MATCH_CASE) {
                        result = !strcmp(haystack_str, needle_str);
                } else {
@@ -64,7 +64,7 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags)
                const char *found;
                char *haystack = estrdup(haystack_str), *needle = estrdup(needle_str);
 
-               if (flags & PHP_HTTP_MATCH_CASE) {
+               if (UNEXPECTED(flags & PHP_HTTP_MATCH_CASE)) {
                        found = zend_memnstr(haystack, needle, strlen(needle), haystack+strlen(haystack));
                } else {
                        found = php_stristr(haystack, needle, strlen(haystack), strlen(needle));
@@ -73,7 +73,7 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags)
                if (found) {
                        if (!(flags & PHP_HTTP_MATCH_WORD)
                        ||      (       (found == haystack || !PHP_HTTP_IS_CTYPE(alnum, *(found - 1)))
-                               &&      (!*(found + strlen(needle)) || !PHP_HTTP_IS_CTYPE(alnum, *(found + strlen(needle))))
+                               &&      EXPECTED(!*(found + strlen(needle)) || !PHP_HTTP_IS_CTYPE(alnum, *(found + strlen(needle))))
                                )
                        ) {
                                result = 1;
@@ -87,27 +87,37 @@ int php_http_match(const char *haystack_str, const char *needle_str, int flags)
        return result;
 }
 
-char *php_http_pretty_key(register char *key, size_t key_len, zend_bool uctitle, zend_bool xhyphen)
+char *php_http_pretty_key(char *key, size_t key_len, zend_bool uctitle, zend_bool xhyphen)
 {
-       size_t i = 1;
+       size_t i;
        int wasalpha;
 
        if (key && key_len) {
-               if ((wasalpha = PHP_HTTP_IS_CTYPE(alpha, key[0]))) {
-                       key[0] = (char) (uctitle ? PHP_HTTP_TO_CTYPE(upper, key[0]) : PHP_HTTP_TO_CTYPE(lower, key[0]));
+               if (EXPECTED(wasalpha = PHP_HTTP_IS_CTYPE(alpha, key[0]))) {
+                       if (EXPECTED(uctitle)) {
+                               key[0] = PHP_HTTP_TO_CTYPE(upper, key[0]);
+                       } else {
+                               key[0] = PHP_HTTP_TO_CTYPE(lower, key[0]);
+                       }
                }
-               PHP_HTTP_DUFF(key_len,
-                       if (PHP_HTTP_IS_CTYPE(alpha, key[i])) {
-                               key[i] = (char) (((!wasalpha) && uctitle) ? PHP_HTTP_TO_CTYPE(upper, key[i]) : PHP_HTTP_TO_CTYPE(lower, key[i]));
-                               wasalpha = 1;
+               for (i = 1; i < key_len; ++i) {
+                       if (EXPECTED(PHP_HTTP_IS_CTYPE(alpha, key[i]))) {
+                               if (EXPECTED(wasalpha)) {
+                                       key[i] = PHP_HTTP_TO_CTYPE(lower, key[i]);
+                               } else if (EXPECTED(uctitle)) {
+                                       key[i] = PHP_HTTP_TO_CTYPE(upper, key[i]);
+                                       wasalpha = 1;
+                               } else {
+                                       key[i] = PHP_HTTP_TO_CTYPE(lower, key[i]);
+                                       wasalpha = 1;
+                               }
                        } else {
-                               if (xhyphen && (key[i] == '_')) {
+                               if (EXPECTED(xhyphen && (key[i] == '_'))) {
                                        key[i] = '-';
                                }
                                wasalpha = 0;
                        }
-                       ++i;
-               );
+               }
        }
        return key;
 }
@@ -251,10 +261,9 @@ size_t php_http_pass_fcall_callback(void *cb_arg, const char *str, size_t len)
        zval zdata;
 
        ZVAL_STRINGL(&zdata, str, len);
-       if (SUCCESS == zend_fcall_info_argn(&fcd->fci, 2, &fcd->fcz, &zdata)) {
-               zend_fcall_info_call(&fcd->fci, &fcd->fcc, NULL, NULL);
-               zend_fcall_info_args_clear(&fcd->fci, 0);
-       }
+       zend_fcall_info_argn(&fcd->fci, 2, &fcd->fcz, &zdata);
+       zend_fcall_info_call(&fcd->fci, &fcd->fcc, NULL, NULL);
+       zend_fcall_info_args_clear(&fcd->fci, 0);
        zval_ptr_dtor(&zdata);
        return len;
 }