mirror of
https://github.com/php/php-src.git
synced 2025-08-15 21:48:51 +02:00
Micro-optimizations to str_increment() and str_decrement() (#18193)
Since it's a new string we're returning we can use RETURN_NEW_STR() and we can also use zend_string_efree() for the strings that we replace because they have RC1.
This commit is contained in:
parent
ce5d2f6d01
commit
24fbe2d61e
1 changed files with 7 additions and 7 deletions
|
@ -1273,10 +1273,10 @@ PHP_FUNCTION(str_increment)
|
||||||
ZSTR_VAL(tmp)[0] = ZSTR_VAL(incremented)[0];
|
ZSTR_VAL(tmp)[0] = ZSTR_VAL(incremented)[0];
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
zend_string_release_ex(incremented, /* persistent */ false);
|
zend_string_efree(incremented);
|
||||||
RETURN_STR(tmp);
|
RETURN_NEW_STR(tmp);
|
||||||
}
|
}
|
||||||
RETURN_STR(incremented);
|
RETURN_NEW_STR(incremented);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -1323,17 +1323,17 @@ PHP_FUNCTION(str_decrement)
|
||||||
|
|
||||||
if (UNEXPECTED(carry || (ZSTR_VAL(decremented)[0] == '0' && ZSTR_LEN(decremented) > 1))) {
|
if (UNEXPECTED(carry || (ZSTR_VAL(decremented)[0] == '0' && ZSTR_LEN(decremented) > 1))) {
|
||||||
if (ZSTR_LEN(decremented) == 1) {
|
if (ZSTR_LEN(decremented) == 1) {
|
||||||
zend_string_release_ex(decremented, /* persistent */ false);
|
zend_string_efree(decremented);
|
||||||
zend_argument_value_error(1, "\"%s\" is out of decrement range", ZSTR_VAL(str));
|
zend_argument_value_error(1, "\"%s\" is out of decrement range", ZSTR_VAL(str));
|
||||||
RETURN_THROWS();
|
RETURN_THROWS();
|
||||||
}
|
}
|
||||||
zend_string *tmp = zend_string_alloc(ZSTR_LEN(decremented) - 1, 0);
|
zend_string *tmp = zend_string_alloc(ZSTR_LEN(decremented) - 1, 0);
|
||||||
memcpy(ZSTR_VAL(tmp), ZSTR_VAL(decremented) + 1, ZSTR_LEN(decremented) - 1);
|
memcpy(ZSTR_VAL(tmp), ZSTR_VAL(decremented) + 1, ZSTR_LEN(decremented) - 1);
|
||||||
ZSTR_VAL(tmp)[ZSTR_LEN(decremented) - 1] = '\0';
|
ZSTR_VAL(tmp)[ZSTR_LEN(decremented) - 1] = '\0';
|
||||||
zend_string_release_ex(decremented, /* persistent */ false);
|
zend_string_efree(decremented);
|
||||||
RETURN_STR(tmp);
|
RETURN_NEW_STR(tmp);
|
||||||
}
|
}
|
||||||
RETURN_STR(decremented);
|
RETURN_NEW_STR(decremented);
|
||||||
}
|
}
|
||||||
|
|
||||||
#if defined(PHP_WIN32)
|
#if defined(PHP_WIN32)
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue