diff options
| author | Anatol Belski <ab@php.net> | 2014-08-17 22:56:26 +0200 |
|---|---|---|
| committer | Anatol Belski <ab@php.net> | 2014-08-17 22:56:26 +0200 |
| commit | 6ed220cbf3cd12379f9296ca29cd47137f0df06b (patch) | |
| tree | a69de8eac600cb5d1ef6633798d23a4ee18aed8c | |
| parent | a3b0cafc0190b2b696a5577a29b46c4d071ac302 (diff) | |
| download | php-git-6ed220cbf3cd12379f9296ca29cd47137f0df06b.tar.gz | |
fixed strspn
| -rw-r--r-- | ext/standard/string.c | 42 |
1 files changed, 20 insertions, 22 deletions
diff --git a/ext/standard/string.c b/ext/standard/string.c index 7d96fceec2..05704cbd2a 100644 --- a/ext/standard/string.c +++ b/ext/standard/string.c @@ -237,14 +237,13 @@ PHP_MSHUTDOWN_FUNCTION(localeconv) PHP_FUNCTION(bin2hex) { zend_string *result; - char *data; - int datalen; + zend_string *data; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "s", &data, &datalen) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "S", &data) == FAILURE) { return; } - result = php_bin2hex((unsigned char *)data, datalen); + result = php_bin2hex((unsigned char *)data->val, data->len); if (!result) { RETURN_FALSE; @@ -282,39 +281,38 @@ PHP_FUNCTION(hex2bin) static void php_spn_common_handler(INTERNAL_FUNCTION_PARAMETERS, int behavior) /* {{{ */ { - char *s11, *s22; - php_int_t len1, len2; + zend_string *s11, *s22; php_int_t start = 0, len = 0; - if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "ss|ii", &s11, &len1, - &s22, &len2, &start, &len) == FAILURE) { + if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "SS|ii", &s11, + &s22, &start, &len) == FAILURE) { return; } if (ZEND_NUM_ARGS() < 4) { - len = len1; + len = s11->len; } /* look at substr() function for more information */ if (start < 0) { - start += len1; + start += (php_int_t)s11->len; if (start < 0) { start = 0; } - } else if (start > len1) { + } else if ((php_size_t)start > s11->len) { RETURN_FALSE; } if (len < 0) { - len += (len1 - start); + len += (s11->len - start); if (len < 0) { len = 0; } } - if (len > len1 - start) { - len = len1 - start; + if (len > (php_int_t)s11->len - start) { + len = s11->len - start; } if(len == 0) { @@ -322,15 +320,15 @@ static void php_spn_common_handler(INTERNAL_FUNCTION_PARAMETERS, int behavior) / } if (behavior == STR_STRSPN) { - RETURN_INT(php_strspn(s11 + start /*str1_start*/, - s22 /*str2_start*/, - s11 + start + len /*str1_end*/, - s22 + len2 /*str2_end*/)); + RETURN_INT(php_strspn(s11->val + start /*str1_start*/, + s22->val /*str2_start*/, + s11->val + start + len /*str1_end*/, + s22->val + s22->len /*str2_end*/)); } else if (behavior == STR_STRCSPN) { - RETURN_INT(php_strcspn(s11 + start /*str1_start*/, - s22 /*str2_start*/, - s11 + start + len /*str1_end*/, - s22 + len2 /*str2_end*/)); + RETURN_INT(php_strcspn(s11->val + start /*str1_start*/, + s22->val /*str2_start*/, + s11->val + start + len /*str1_end*/, + s22->val + s22->len /*str2_end*/)); } } |
