Index: src/mcd-connection.c
===================================================================
--- src/mcd-connection.c (revision 40)
+++ src/mcd-connection.c (working copy)
@@ -774,7 +774,6 @@
_mcd_connection_setup_avatar (McdConnectionPrivate *priv)
{
gchar *filename, *mime_type, *token;
- GArray *avatar;
GError *error = NULL;
priv->avatars_proxy = tp_conn_get_interface (priv->tp_conn,
@@ -794,14 +793,19 @@
/* if the token is set, we have nothing to do */
if (!token && filename && g_file_test (filename, G_FILE_TEST_EXISTS))
{
- avatar = g_array_new (FALSE, FALSE, 1);
- g_return_if_fail (avatar != NULL);
- if (g_file_get_contents (filename, &avatar->data, &avatar->len, &error))
+ gchar *data = NULL;
+ size_t length;
+ if (g_file_get_contents (filename, &data, &length, &error))
{
- if (avatar->len > 0)
+ if (length > 0 && length < G_MAXUINT)
+ {
+ GArray avatar;
+ avatar.data = data;
+ avatar.len = (guint)length;
tp_conn_iface_avatars_set_avatar_async (priv->avatars_proxy,
- avatar, mime_type,
+ &avatar, mime_type,
set_avatar_cb, priv);
+ }
else
tp_conn_iface_avatars_clear_avatar_async(priv->avatars_proxy,
clear_avatar_cb,
@@ -813,7 +817,7 @@
g_debug ("%s: error reading %s: %s", G_STRFUNC, filename, error->message);
g_error_free (error);
}
- g_array_free (avatar, TRUE);
+ g_free(data);
}
g_free (filename);