diff options
author | Evan Huus <eapache@gmail.com> | 2013-04-24 00:11:57 +0000 |
---|---|---|
committer | Evan Huus <eapache@gmail.com> | 2013-04-24 00:11:57 +0000 |
commit | 2616e091409ba18c6f241a274e2af9d5e13853b0 (patch) | |
tree | 6493b2175c2e9bb4001ed1631bb858706068889d /epan/wmem | |
parent | 1b13606b6f41417960f97435cfbefe501a129a62 (diff) |
Add truncate function to wmem strbuf.
svn path=/trunk/; revision=49010
Diffstat (limited to 'epan/wmem')
-rw-r--r-- | epan/wmem/wmem_strbuf.c | 13 | ||||
-rw-r--r-- | epan/wmem/wmem_strbuf.h | 4 | ||||
-rw-r--r-- | epan/wmem/wmem_test.c | 8 |
3 files changed, 24 insertions, 1 deletions
diff --git a/epan/wmem/wmem_strbuf.c b/epan/wmem/wmem_strbuf.c index a3ad6e8ed0..25e8a254df 100644 --- a/epan/wmem/wmem_strbuf.c +++ b/epan/wmem/wmem_strbuf.c @@ -130,7 +130,7 @@ wmem_strbuf_append(wmem_strbuf_t *strbuf, const gchar *str) { gsize append_len; - if (!strbuf || !str || str[0] == '\0') { + if (!str || str[0] == '\0') { return; } @@ -176,6 +176,17 @@ wmem_strbuf_append_printf(wmem_strbuf_t *strbuf, const gchar *format, ...) va_end(ap); } +void +wmem_strbuf_truncate(wmem_strbuf_t *strbuf, const gsize len) +{ + if (len >= strbuf->len) { + return; + } + + strbuf->str[len] = '\0'; + strbuf->len = len; +} + const gchar * wmem_strbuf_get_str(wmem_strbuf_t *strbuf) { diff --git a/epan/wmem/wmem_strbuf.h b/epan/wmem/wmem_strbuf.h index 8c4491be52..ba1e0791f0 100644 --- a/epan/wmem/wmem_strbuf.h +++ b/epan/wmem/wmem_strbuf.h @@ -57,6 +57,10 @@ void wmem_strbuf_append_printf(wmem_strbuf_t *strbuf, const gchar *format, ...); WS_DLL_PUBLIC +void +wmem_strbuf_truncate(wmem_strbuf_t *strbuf, const gsize len); + +WS_DLL_PUBLIC const gchar * wmem_strbuf_get_str(wmem_strbuf_t *strbuf); diff --git a/epan/wmem/wmem_test.c b/epan/wmem/wmem_test.c index 240cfefeae..5461e8d147 100644 --- a/epan/wmem/wmem_test.c +++ b/epan/wmem/wmem_test.c @@ -368,6 +368,14 @@ wmem_test_strbuf(void) g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TESTFUZZ3a"); g_assert(wmem_strbuf_get_len(strbuf) == 10); + wmem_strbuf_truncate(strbuf, 10); + g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TESTFUZZ3a"); + g_assert(wmem_strbuf_get_len(strbuf) == 10); + + wmem_strbuf_truncate(strbuf, 3); + g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, "TES"); + g_assert(wmem_strbuf_get_len(strbuf) == 3); + strbuf = wmem_strbuf_sized_new(allocator, 10, 10); g_assert(strbuf); g_assert_cmpstr(wmem_strbuf_get_str(strbuf), ==, ""); |