# HG changeset patch # User Mark Doliner # Date 1107235167 0 # Node ID 3e2cd3fe889765b7de430fb25570b2e9d2b4cda3 # Parent e06da39b467c6346b7463f38b70ac45d7940e9f3 [gaim-migrate @ 11944] Fix a problem Justin Wood noticed and supplied sf patch 920581 to fix My fix is slightly difference. The problem was that, if an iChat user had an available message up, then they changed their buddy icon, Gaim would stop showing the available message for the person. committer: Tailor Script diff -r e06da39b467c -r 3e2cd3fe8897 src/protocols/oscar/locate.c --- a/src/protocols/oscar/locate.c Tue Feb 01 05:02:40 2005 +0000 +++ b/src/protocols/oscar/locate.c Tue Feb 01 05:19:27 2005 +0000 @@ -755,7 +755,7 @@ } break; case 0x0002: { /* An available message */ - if (length2 > 4) { + if (length2 >= 4) { free(outinfo->avail); outinfo->avail_len = aimbs_get16(bs); outinfo->avail = aimbs_getstr(bs, outinfo->avail_len); diff -r e06da39b467c -r 3e2cd3fe8897 src/protocols/oscar/oscar.c --- a/src/protocols/oscar/oscar.c Tue Feb 01 05:02:40 2005 +0000 +++ b/src/protocols/oscar/oscar.c Tue Feb 01 05:19:27 2005 +0000 @@ -3023,12 +3023,21 @@ bi->ico_informed = FALSE; bi->ipaddr = info->icqinfo.ipaddr; - /* Available message stuff */ - free(bi->availmsg); + /* + * Handle the available message. If info->avail is NULL then the user + * may or may not have an available message, so don't do anything. If + * info->avail is set to the empty string, then the user's client DOES + * support available messages and the user DOES NOT have one set. + * Otherwise info->avail contains the available message. + */ if (info->avail != NULL) - bi->availmsg = oscar_encoding_to_utf8(info->avail_encoding, info->avail, info->avail_len); - else - bi->availmsg = NULL; + { + free(bi->availmsg); + if (info->avail[0] != '\0') + bi->availmsg = oscar_encoding_to_utf8(info->avail_encoding, info->avail, info->avail_len); + else + bi->availmsg = NULL; + } /* Server stored icon stuff */ if (info->iconcsumlen) {