aboutsummaryrefslogtreecommitdiffstats
path: root/epan/emem.c
diff options
context:
space:
mode:
authorMichael Mann <mmann78@netscape.net>2012-08-18 19:20:31 +0000
committerMichael Mann <mmann78@netscape.net>2012-08-18 19:20:31 +0000
commit493516fd6c3d70732d409ae940159ef5103ad753 (patch)
tree58c05c0b6d78894f24a3ad0eaaa994126f73953d /epan/emem.c
parentff6a33fdb44d7cb69d12f466d7a46eb95947823b (diff)
Convert GString to emem_strbuf_t in packet-gadu-gadu.c
Required an additional function, ep_strbuf_append_unichar, in emem module svn path=/trunk/; revision=44564
Diffstat (limited to 'epan/emem.c')
-rw-r--r--epan/emem.c25
1 files changed, 25 insertions, 0 deletions
diff --git a/epan/emem.c b/epan/emem.c
index 26d619eb54..9a16e29c6e 100644
--- a/epan/emem.c
+++ b/epan/emem.c
@@ -2355,6 +2355,31 @@ ep_strbuf_append_c(emem_strbuf_t *strbuf, const gchar c)
}
emem_strbuf_t *
+ep_strbuf_append_unichar(emem_strbuf_t *strbuf, const gunichar c)
+{
+ gchar buf[6];
+ gint charlen;
+
+ if (!strbuf) {
+ return strbuf;
+ }
+
+ charlen = g_unichar_to_utf8(c, buf);
+
+ /* +charlen for the new character & +1 for the trailing '\0'. */
+ if (strbuf->alloc_len < strbuf->len + charlen + 1) {
+ ep_strbuf_grow(strbuf, strbuf->len + charlen + 1);
+ }
+ if (strbuf->alloc_len >= strbuf->len + charlen + 1) {
+ memcpy(&strbuf->str[strbuf->len], buf, charlen);
+ strbuf->len += charlen;
+ strbuf->str[strbuf->len] = '\0';
+ }
+
+ return strbuf;
+}
+
+emem_strbuf_t *
ep_strbuf_truncate(emem_strbuf_t *strbuf, gsize len)
{
if (!strbuf || len >= strbuf->len) {