summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWill Thompson <will.thompson@collabora.co.uk>2012-11-14 15:32:42 +0000
committerWill Thompson <will.thompson@collabora.co.uk>2012-11-14 15:32:42 +0000
commite27b7af0d486b80fe370bd9bcbe6e109dfe1aec9 (patch)
tree69199fbd5d8649c4e06d7901d872820122dcba79
parentfbee99b49de53621a8a5a38534d4cc423296aeef (diff)
Make line-wrapped base64 allocation clearer
-rw-r--r--src/conn-avatars.c6
1 files changed, 5 insertions, 1 deletions
diff --git a/src/conn-avatars.c b/src/conn-avatars.c
index 34ca5f8bf..b74af5d92 100644
--- a/src/conn-avatars.c
+++ b/src/conn-avatars.c
@@ -838,9 +838,13 @@ gabble_connection_set_avatar (TpSvcConnectionInterfaceAvatars *iface,
if (avatar != NULL && avatar->len > 0)
{
gint state = 0, save = 0, outlen;
+ /* See the documentation for g_base64_encode_step(). */
+ guint base64_data_size = (avatar->len / 3 + 1) * 4 + 4;
+ guint base64_line_wrapped_data_size =
+ base64_data_size + (base64_data_size / 72) + 1;
ctx->avatar = g_string_new_len (avatar->data, avatar->len);
- base64 = g_malloc (((avatar->len / 3 + 1) *4 + 4) + ((avatar->len / 3 + 1) * 4 + 4) / 72 + 1);
+ base64 = g_malloc (base64_line_wrapped_data_size);
outlen = g_base64_encode_step ((const guchar *) avatar->data,
avatar->len, TRUE, base64, &state, &save);
outlen += g_base64_encode_close (TRUE, base64 + outlen, &state, &save);