From cff76a98ae3901614a3f5c5be70917f9427db175 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Tim=20D=C3=BCsterhus?= Date: Thu, 27 Mar 2025 20:15:25 +0100 Subject: [PATCH] zend_smart_string: Add `smart_string_append_printf()` (#18160) This is for API parity with `smart_str_append_printf()`. --- UPGRADING.INTERNALS | 2 ++ Zend/zend_smart_str.c | 7 +++++++ Zend/zend_smart_string.h | 3 +++ 3 files changed, 12 insertions(+) diff --git a/UPGRADING.INTERNALS b/UPGRADING.INTERNALS index d2ab4e13fc5..13b5e6a3944 100644 --- a/UPGRADING.INTERNALS +++ b/UPGRADING.INTERNALS @@ -21,6 +21,8 @@ PHP 8.5 INTERNALS UPGRADE NOTES could interfere. . zend_get_callable_name() now returns the name of the underlying function for fake closures. + . Added smart_string_append_printf() matching smart_str_append_printf() for + char* instead of zend_string*-based smart strings. ======================== 2. Build system changes diff --git a/Zend/zend_smart_str.c b/Zend/zend_smart_str.c index ade137a4bb6..501f6e6176c 100644 --- a/Zend/zend_smart_str.c +++ b/Zend/zend_smart_str.c @@ -131,6 +131,13 @@ ZEND_API void smart_str_append_printf(smart_str *dest, const char *format, ...) va_end(arg); } +ZEND_API void smart_string_append_printf(smart_string *dest, const char *format, ...) { + va_list arg; + va_start(arg, format); + zend_printf_to_smart_string(dest, format, arg); + va_end(arg); +} + #define SMART_STRING_OVERHEAD (ZEND_MM_OVERHEAD + 1) #define SMART_STRING_START_SIZE 256 #define SMART_STRING_START_LEN (SMART_STRING_START_SIZE - SMART_STRING_OVERHEAD) diff --git a/Zend/zend_smart_string.h b/Zend/zend_smart_string.h index 8149b29fb33..9f04e1a340a 100644 --- a/Zend/zend_smart_string.h +++ b/Zend/zend_smart_string.h @@ -48,6 +48,9 @@ #define smart_string_append_unsigned(str, val) \ smart_string_append_unsigned_ex((str), (val), 0) +ZEND_API void smart_string_append_printf(smart_string *dest, const char *format, ...) + ZEND_ATTRIBUTE_FORMAT(printf, 2, 3); + ZEND_API void ZEND_FASTCALL _smart_string_alloc_persistent(smart_string *str, size_t len); ZEND_API void ZEND_FASTCALL _smart_string_alloc(smart_string *str, size_t len);