Skip to content

Commit 24fbe2d

Browse files
authored
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.
1 parent ce5d2f6 commit 24fbe2d

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

Diff for: ext/standard/string.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -1273,10 +1273,10 @@ PHP_FUNCTION(str_increment)
12731273
ZSTR_VAL(tmp)[0] = ZSTR_VAL(incremented)[0];
12741274
break;
12751275
}
1276-
zend_string_release_ex(incremented, /* persistent */ false);
1277-
RETURN_STR(tmp);
1276+
zend_string_efree(incremented);
1277+
RETURN_NEW_STR(tmp);
12781278
}
1279-
RETURN_STR(incremented);
1279+
RETURN_NEW_STR(incremented);
12801280
}
12811281

12821282

@@ -1323,17 +1323,17 @@ PHP_FUNCTION(str_decrement)
13231323

13241324
if (UNEXPECTED(carry || (ZSTR_VAL(decremented)[0] == '0' && ZSTR_LEN(decremented) > 1))) {
13251325
if (ZSTR_LEN(decremented) == 1) {
1326-
zend_string_release_ex(decremented, /* persistent */ false);
1326+
zend_string_efree(decremented);
13271327
zend_argument_value_error(1, "\"%s\" is out of decrement range", ZSTR_VAL(str));
13281328
RETURN_THROWS();
13291329
}
13301330
zend_string *tmp = zend_string_alloc(ZSTR_LEN(decremented) - 1, 0);
13311331
memcpy(ZSTR_VAL(tmp), ZSTR_VAL(decremented) + 1, ZSTR_LEN(decremented) - 1);
13321332
ZSTR_VAL(tmp)[ZSTR_LEN(decremented) - 1] = '\0';
1333-
zend_string_release_ex(decremented, /* persistent */ false);
1334-
RETURN_STR(tmp);
1333+
zend_string_efree(decremented);
1334+
RETURN_NEW_STR(tmp);
13351335
}
1336-
RETURN_STR(decremented);
1336+
RETURN_NEW_STR(decremented);
13371337
}
13381338

13391339
#if defined(PHP_WIN32)

0 commit comments

Comments
 (0)