Skip to content

Commit a9b84f9

Browse files
authored
Use specialized functions/macros to reduce code size in ext/random (#18499)
On x86-64 with GCC 14.2.1: zim_Random_Randomizer_getBytes goes from 514 to 418 bytes zim_Random_Randomizer_getBytesFromString goes from 750 to 676 bytes
1 parent be53902 commit a9b84f9

File tree

1 file changed

+7
-7
lines changed

1 file changed

+7
-7
lines changed

ext/random/randomizer.c

+7-7
Original file line numberDiff line numberDiff line change
@@ -297,7 +297,7 @@ PHP_METHOD(Random_Randomizer, getBytes)
297297
while (total_size + 8 <= length) {
298298
result = engine.algo->generate(engine.state);
299299
if (EG(exception)) {
300-
zend_string_free(retval);
300+
zend_string_efree(retval);
301301
RETURN_THROWS();
302302
}
303303

@@ -326,7 +326,7 @@ PHP_METHOD(Random_Randomizer, getBytes)
326326
while (total_size < length) {
327327
result = engine.algo->generate(engine.state);
328328
if (EG(exception)) {
329-
zend_string_free(retval);
329+
zend_string_efree(retval);
330330
RETURN_THROWS();
331331
}
332332

@@ -342,7 +342,7 @@ PHP_METHOD(Random_Randomizer, getBytes)
342342
}
343343

344344
ZSTR_VAL(retval)[length] = '\0';
345-
RETURN_STR(retval);
345+
RETURN_NEW_STR(retval);
346346
}
347347
/* }}} */
348348

@@ -451,7 +451,7 @@ PHP_METHOD(Random_Randomizer, getBytesFromString)
451451
uint64_t offset = engine.algo->range(engine.state, 0, max_offset);
452452

453453
if (EG(exception)) {
454-
zend_string_free(retval);
454+
zend_string_efree(retval);
455455
RETURN_THROWS();
456456
}
457457

@@ -473,7 +473,7 @@ PHP_METHOD(Random_Randomizer, getBytesFromString)
473473
while (total_size < length) {
474474
php_random_result result = engine.algo->generate(engine.state);
475475
if (EG(exception)) {
476-
zend_string_free(retval);
476+
zend_string_efree(retval);
477477
RETURN_THROWS();
478478
}
479479

@@ -484,7 +484,7 @@ PHP_METHOD(Random_Randomizer, getBytesFromString)
484484

485485
if (offset > max_offset) {
486486
if (++failures > PHP_RANDOM_RANGE_ATTEMPTS) {
487-
zend_string_free(retval);
487+
zend_string_efree(retval);
488488
zend_throw_error(random_ce_Random_BrokenRandomEngineError, "Failed to generate an acceptable random number in %d attempts", PHP_RANDOM_RANGE_ATTEMPTS);
489489
RETURN_THROWS();
490490
}
@@ -503,7 +503,7 @@ PHP_METHOD(Random_Randomizer, getBytesFromString)
503503
}
504504

505505
ZSTR_VAL(retval)[length] = '\0';
506-
RETURN_STR(retval);
506+
RETURN_NEW_STR(retval);
507507
}
508508
/* }}} */
509509

0 commit comments

Comments
 (0)