From 3d35af41fc0fc63ae2a9b04f3e3af1d81d754332 Mon Sep 17 00:00:00 2001 From: Richard Fuchs Date: Tue, 23 Jul 2024 16:06:04 -0400 Subject: [PATCH] MT#55283 slightly improved STR_DUP This should give slightly better performance due to not having to look for the terminator byte twice. Not benchmarked. No-op. Change-Id: I458a06b492393fcf5b186a61b69acabdf63a216e --- lib/str.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/lib/str.h b/lib/str.h index fbb5be34a..bead24c02 100644 --- a/lib/str.h +++ b/lib/str.h @@ -41,7 +41,11 @@ TYPED_GQUEUE(str, str) #define STR_GS(s) ((str) { (s)->str, (s)->len }) #define STR_LEN(s, len) ((str) { (char *) (s), len }) #define STR_LEN_ASSERT(s, len) ({ assert(sizeof(s) >= len); (str) { (char *) (s), len }; }) +#if GLIB_CHECK_VERSION(2,68,0) +#define STR_DUP(s) ({ size_t __l = strlen(s); (str) { g_memdup2(s, __l + 1), __l }; }) +#else #define STR_DUP(s) ((str) { g_strdup(s), strlen(s) }) +#endif #define STR_CONST_BUF(buf) ((str) { (char *) &buf, sizeof(buf) })