Mercurial > pidgin.yaz
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); |