aboutsummaryrefslogtreecommitdiffstats
path: root/epan/wmem
diff options
context:
space:
mode:
authorEvan Huus <eapache@gmail.com>2013-04-24 00:11:57 +0000
committerEvan Huus <eapache@gmail.com>2013-04-24 00:11:57 +0000
commit2616e091409ba18c6f241a274e2af9d5e13853b0 (patch)
tree6493b2175c2e9bb4001ed1631bb858706068889d /epan/wmem
parent1b13606b6f41417960f97435cfbefe501a129a62 (diff)
Add truncate function to wmem strbuf.
svn path=/trunk/; revision=49010
Diffstat (limited to 'epan/wmem')
-rw-r--r--epan/wmem/wmem_strbuf.c13
-rw-r--r--epan/wmem/wmem_strbuf.h4
-rw-r--r--epan/wmem/wmem_test.c8
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), ==, "");