diff options
author | Michael Mann <mmann78@netscape.net> | 2012-08-18 19:20:31 +0000 |
---|---|---|
committer | Michael Mann <mmann78@netscape.net> | 2012-08-18 19:20:31 +0000 |
commit | 493516fd6c3d70732d409ae940159ef5103ad753 (patch) | |
tree | 58c05c0b6d78894f24a3ad0eaaa994126f73953d /epan/emem.c | |
parent | ff6a33fdb44d7cb69d12f466d7a46eb95947823b (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.c | 25 |
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) { |