diff options
author | Will Thompson <will.thompson@collabora.co.uk> | 2012-11-14 15:32:42 +0000 |
---|---|---|
committer | Will Thompson <will.thompson@collabora.co.uk> | 2012-11-14 15:32:42 +0000 |
commit | e27b7af0d486b80fe370bd9bcbe6e109dfe1aec9 (patch) | |
tree | 69199fbd5d8649c4e06d7901d872820122dcba79 | |
parent | fbee99b49de53621a8a5a38534d4cc423296aeef (diff) |
Make line-wrapped base64 allocation clearer
-rw-r--r-- | src/conn-avatars.c | 6 |
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); |