# HG changeset patch # User Sean Egan # Date 1179961991 0 # Node ID 6ec8bae7d98aadeb7a9dcf363d235d073e009d92 # Parent 461297da2e280da0bab8bbf5289693f1838a94bb Patch #1038. Fix receiving of Yahoo buddy icons. Thanks, vampire! diff -r 461297da2e28 -r 6ec8bae7d98a libpurple/protocols/yahoo/yahoo.c --- a/libpurple/protocols/yahoo/yahoo.c Wed May 23 22:34:19 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo.c Wed May 23 23:13:11 2007 +0000 @@ -365,9 +365,11 @@ break; yahoo_friend_set_buddy_icon_need_request(f, FALSE); - if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL && - cksum != strtol(locksum, NULL, 10)) - yahoo_send_picture_request(gc, name); + if (b) { + locksum = purple_buddy_icons_get_checksum_for_user(b); + if (!locksum || (cksum != strtol(locksum, NULL, 10))) + yahoo_send_picture_request(gc, name); + } break; } diff -r 461297da2e28 -r 6ec8bae7d98a libpurple/protocols/yahoo/yahoo_picture.c --- a/libpurple/protocols/yahoo/yahoo_picture.c Wed May 23 22:34:19 2007 +0000 +++ b/libpurple/protocols/yahoo/yahoo_picture.c Wed May 23 23:13:11 2007 +0000 @@ -157,7 +157,10 @@ case 5: /* us */ break; + /* NOTE: currently the server seems to only send 213; 206 was used + * in older versions. Check whether it's still needed. */ case 206: + case 213: icon = strtol(pair->value, NULL, 10); break; } @@ -205,9 +208,11 @@ const char *locksum = NULL; /* FIXME: Cleanup this strtol() stuff if possible. */ - if (b && (locksum = purple_buddy_icons_get_checksum_for_user(b)) != NULL && - (checksum != strtol(locksum, NULL, 10))) - yahoo_send_picture_request(gc, who); + if (b) { + locksum = purple_buddy_icons_get_checksum_for_user(b); + if (!locksum || (checksum != strtol(locksum, NULL, 10))) + yahoo_send_picture_request(gc, who); + } } }