From ea8b5fb024d4a8b77648c367b8c8593e6bd65fca Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jo=C3=A3o=20Valverde?= Date: Wed, 14 Dec 2022 19:50:30 +0000 Subject: [PATCH] wmem: Add wmem_strbuf_append_c_count() --- wsutil/wmem/wmem_strbuf.c | 11 +++++++++++ wsutil/wmem/wmem_strbuf.h | 4 ++++ wsutil/wmem/wmem_test.c | 4 ++++ 3 files changed, 19 insertions(+) diff --git a/wsutil/wmem/wmem_strbuf.c b/wsutil/wmem/wmem_strbuf.c index 8111f01d00..f04ecb7058 100644 --- a/wsutil/wmem/wmem_strbuf.c +++ b/wsutil/wmem/wmem_strbuf.c @@ -217,6 +217,17 @@ wmem_strbuf_append_c(wmem_strbuf_t *strbuf, const gchar c) strbuf->str[strbuf->len] = '\0'; } +void +wmem_strbuf_append_c_count(wmem_strbuf_t *strbuf, const gchar c, size_t count) +{ + wmem_strbuf_grow(strbuf, count); + + while (count-- > 0) { + strbuf->str[strbuf->len++] = c; + } + strbuf->str[strbuf->len] = '\0'; +} + void wmem_strbuf_append_unichar(wmem_strbuf_t *strbuf, const gunichar c) { diff --git a/wsutil/wmem/wmem_strbuf.h b/wsutil/wmem/wmem_strbuf.h index 68c6cefe4c..68bb62f584 100644 --- a/wsutil/wmem/wmem_strbuf.h +++ b/wsutil/wmem/wmem_strbuf.h @@ -98,6 +98,10 @@ WS_DLL_PUBLIC void wmem_strbuf_append_c(wmem_strbuf_t *strbuf, const gchar c); +WS_DLL_PUBLIC +void +wmem_strbuf_append_c_count(wmem_strbuf_t *strbuf, const gchar c, size_t count); + WS_DLL_PUBLIC void wmem_strbuf_append_unichar(wmem_strbuf_t *strbuf, const gunichar c); diff --git a/wsutil/wmem/wmem_test.c b/wsutil/wmem/wmem_test.c index dfa6895260..c887db9e3d 100644 --- a/wsutil/wmem/wmem_test.c +++ b/wsutil/wmem/wmem_test.c @@ -1112,6 +1112,10 @@ wmem_test_strbuf(void) g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TESTFUZZ3aq\xC2\xA9"); g_assert_cmpuint(wmem_strbuf_get_len(strbuf), ==, 13); + wmem_strbuf_append_c_count(strbuf, '+', 8); + g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TESTFUZZ3aq\xC2\xA9++++++++"); + g_assert_cmpuint(wmem_strbuf_get_len(strbuf), ==, 21); + wmem_strbuf_truncate(strbuf, 32); wmem_strbuf_truncate(strbuf, 24); wmem_strbuf_truncate(strbuf, 16);