comparison libpurple/protocols/myspace/user.c @ 29187:57612c4d495b

Fix a crash when disconnecting with a pending buddy icon fetch request. We weren't canceling our asynchronous URL fetch
author Mark Doliner <mark@kingant.net>
date Sat, 12 Dec 2009 01:17:57 +0000
parents f541583e31bd
children 10df4b6b149c
comparison
equal deleted inserted replaced
29168:ef43e6df5fdc 29187:57612c4d495b
67 67
68 void msim_user_free(MsimUser *user) 68 void msim_user_free(MsimUser *user)
69 { 69 {
70 if (!user) 70 if (!user)
71 return; 71 return;
72
73 purple_util_fetch_url_cancel(user->url_data);
72 74
73 g_free(user->client_info); 75 g_free(user->client_info);
74 g_free(user->gender); 76 g_free(user->gender);
75 g_free(user->location); 77 g_free(user->location);
76 g_free(user->headline); 78 g_free(user->headline);
209 const gchar *error_message) 211 const gchar *error_message)
210 { 212 {
211 MsimUser *user = (MsimUser *)user_data; 213 MsimUser *user = (MsimUser *)user_data;
212 const char *name = purple_buddy_get_name(user->buddy); 214 const char *name = purple_buddy_get_name(user->buddy);
213 PurpleAccount *account; 215 PurpleAccount *account;
216
217 user->url_data = NULL;
214 218
215 purple_debug_info("msim_downloaded_buddy_icon", 219 purple_debug_info("msim_downloaded_buddy_icon",
216 "Downloaded %" G_GSIZE_FORMAT " bytes\n", len); 220 "Downloaded %" G_GSIZE_FORMAT " bytes\n", len);
217 221
218 if (!url_text) { 222 if (!url_text) {
373 /* TODO: use ETag for checksum */ 377 /* TODO: use ETag for checksum */
374 previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy); 378 previous_url = purple_buddy_icons_get_checksum_for_user(user->buddy);
375 379
376 /* Only download if URL changed */ 380 /* Only download if URL changed */
377 if (!previous_url || !g_str_equal(previous_url, user->image_url)) { 381 if (!previous_url || !g_str_equal(previous_url, user->image_url)) {
378 purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user); 382 user->url_data = purple_util_fetch_url(user->image_url, TRUE, NULL, TRUE, msim_downloaded_buddy_icon, (gpointer)user);
379 } 383 }
380 } else if (g_str_equal(key_str, "LastImageUpdated")) { 384 } else if (g_str_equal(key_str, "LastImageUpdated")) {
381 /* TODO: use somewhere */ 385 /* TODO: use somewhere */
382 user->last_image_updated = atol(value_str); 386 user->last_image_updated = atol(value_str);
383 g_free(value_str); 387 g_free(value_str);