Skip to content

Avoid double allocation when joining To/Cc headers#58

Open
iliaal wants to merge 1 commit into
php:masterfrom
iliaal:pr/header-join-concat
Open

Avoid double allocation when joining To/Cc headers#58
iliaal wants to merge 1 commit into
php:masterfrom
iliaal:pr/header-join-concat

Conversation

@iliaal
Copy link
Copy Markdown

@iliaal iliaal commented Jun 7, 2026

Folding repeated To:/Cc: headers built a throwaway buffer with emalloc + strcpy + two strcat calls, then handed it to add_assoc_string, which copied it again into a zend_string — two allocations and two copies per fold. Build the joined value once, directly into a zend_string via memcpy, and store it with add_assoc_str, which takes ownership. One allocation, one copy; output is unchanged.

Folding repeated To:/Cc: headers built a throwaway buffer with
emalloc + strcpy + two strcat calls, then handed it to
add_assoc_string, which copied it again into a zend_string before the
temporary was freed. That is two allocations and two copies per fold.

Build the joined value directly into a single zend_string with memcpy
and store it with add_assoc_str, which takes ownership. One allocation,
one copy. Output ("a, b, c") is unchanged.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant