Skip to content

Commit dfd183d

Browse files
committed
Avoid usually-unnecessary buffer reallocations in pack* functions
1 parent 183f3ba commit dfd183d

File tree

1 file changed

+8
-2
lines changed

1 file changed

+8
-2
lines changed

classes/Types.cpp

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -253,8 +253,14 @@ void ZEND_FASTCALL zif_packType(INTERNAL_FUNCTION_PARAMETERS) {
253253

254254
writeTypeCommon<TValue, writeTypeFunc>(INTERNAL_FUNCTION_PARAM_PASSTHRU, writer, value);
255255

256-
RETVAL_STRINGL(ZSTR_VAL(writer.buffer), writer.used);
257-
zend_string_release_ex(writer.buffer, 0);
256+
if (ZSTR_LEN(writer.buffer) != writer.used) {
257+
ZEND_ASSERT(0); //we don't expect unused bytes from oneshot packing
258+
259+
RETVAL_STRINGL(ZSTR_VAL(writer.buffer), writer.used);
260+
zend_string_release_ex(writer.buffer, 0);
261+
} else {
262+
RETURN_STR(writer.buffer);
263+
}
258264
}
259265

260266

0 commit comments

Comments
 (0)