Remove pointless operations from zend_user_serialize() (#18188)

We don't have to call zval_ptr_dtor() on IS_NULL, and we only have to
check for the UNDEF type.
Reduces code size from 231 to 199 on x86-64.
This commit is contained in:
Niels Dossche 2025-03-30 11:18:15 +02:00 committed by GitHub
parent 0607c22f8e
commit 4a7332f4c6
No known key found for this signature in database
GPG key ID: B5690EEEBB952194

View file

@ -412,13 +412,12 @@ ZEND_API int zend_user_serialize(zval *object, unsigned char **buffer, size_t *b
zend_call_method_with_0_params( zend_call_method_with_0_params(
Z_OBJ_P(object), Z_OBJCE_P(object), NULL, "serialize", &retval); Z_OBJ_P(object), Z_OBJCE_P(object), NULL, "serialize", &retval);
if (Z_TYPE(retval) == IS_UNDEF || EG(exception)) { if (Z_TYPE(retval) == IS_UNDEF) {
result = FAILURE; result = FAILURE;
} else { } else {
switch(Z_TYPE(retval)) { switch(Z_TYPE(retval)) {
case IS_NULL: case IS_NULL:
/* we could also make this '*buf_len = 0' but this allows to skip variables */ /* we could also make this '*buf_len = 0' but this allows to skip variables */
zval_ptr_dtor(&retval);
return FAILURE; return FAILURE;
case IS_STRING: case IS_STRING:
*buffer = (unsigned char*)estrndup(Z_STRVAL(retval), Z_STRLEN(retval)); *buffer = (unsigned char*)estrndup(Z_STRVAL(retval), Z_STRLEN(retval));