Mercurial > pidgin
diff libpurple/protocols/oscar/family_locate.c @ 17191:1927f4ead3ca
Make all the oscar memory allocations and frees use the glib functions to avoid problems when mixing C runtimes.
author | Daniel Atallah <daniel.atallah@gmail.com> |
---|---|
date | Tue, 22 May 2007 18:56:09 +0000 |
parents | 1560f28cb854 |
children | f80f7e1047be |
line wrap: on
line diff
--- a/libpurple/protocols/oscar/family_locate.c Tue May 22 13:00:00 2007 +0000 +++ b/libpurple/protocols/oscar/family_locate.c Tue May 22 18:56:09 2007 +0000 @@ -238,8 +238,8 @@ cur = aim_locate_finduserinfo(od, userinfo->sn); if (cur == NULL) { - cur = (aim_userinfo_t *)calloc(1, sizeof(aim_userinfo_t)); - cur->sn = strdup(userinfo->sn); + cur = (aim_userinfo_t *)g_new0(aim_userinfo_t, 1); + cur->sn = g_strdup(userinfo->sn); cur->next = od->locate.userinfo; od->locate.userinfo = cur; } @@ -261,63 +261,63 @@ cur->present |= userinfo->present; if (userinfo->iconcsumlen > 0) { - free(cur->iconcsum); - cur->iconcsum = (guint8 *)malloc(userinfo->iconcsumlen); + g_free(cur->iconcsum); + cur->iconcsum = (guint8 *)g_malloc(userinfo->iconcsumlen); memcpy(cur->iconcsum, userinfo->iconcsum, userinfo->iconcsumlen); cur->iconcsumlen = userinfo->iconcsumlen; } if (userinfo->info != NULL) { - free(cur->info); - free(cur->info_encoding); + g_free(cur->info); + g_free(cur->info_encoding); if (userinfo->info_len > 0) { - cur->info = (char *)malloc(userinfo->info_len); + cur->info = (char *)g_malloc(userinfo->info_len); memcpy(cur->info, userinfo->info, userinfo->info_len); } else cur->info = NULL; - cur->info_encoding = strdup(userinfo->info_encoding); + cur->info_encoding = g_strdup(userinfo->info_encoding); cur->info_len = userinfo->info_len; } if (userinfo->status != NULL) { - free(cur->status); - free(cur->status_encoding); + g_free(cur->status); + g_free(cur->status_encoding); if (userinfo->status_len > 0) { - cur->status = (char *)malloc(userinfo->status_len); + cur->status = (char *)g_malloc(userinfo->status_len); memcpy(cur->status, userinfo->status, userinfo->status_len); } else cur->status = NULL; if (userinfo->status_encoding != NULL) - cur->status_encoding = strdup(userinfo->status_encoding); + cur->status_encoding = g_strdup(userinfo->status_encoding); else cur->status_encoding = NULL; cur->status_len = userinfo->status_len; } if (userinfo->itmsurl != NULL) { - free(cur->itmsurl); - free(cur->itmsurl_encoding); + g_free(cur->itmsurl); + g_free(cur->itmsurl_encoding); if (userinfo->itmsurl_len > 0) { - cur->itmsurl = (char *)malloc(userinfo->itmsurl_len); + cur->itmsurl = (char *)g_malloc(userinfo->itmsurl_len); memcpy(cur->itmsurl, userinfo->itmsurl, userinfo->itmsurl_len); } else cur->itmsurl = NULL; if (userinfo->itmsurl_encoding != NULL) - cur->itmsurl_encoding = strdup(userinfo->itmsurl_encoding); + cur->itmsurl_encoding = g_strdup(userinfo->itmsurl_encoding); else cur->itmsurl_encoding = NULL; cur->itmsurl_len = userinfo->itmsurl_len; } if (userinfo->away != NULL) { - free(cur->away); - free(cur->away_encoding); + g_free(cur->away); + g_free(cur->away_encoding); if (userinfo->away_len > 0) { - cur->away = (char *)malloc(userinfo->away_len); + cur->away = (char *)g_malloc(userinfo->away_len); memcpy(cur->away, userinfo->away, userinfo->away_len); } else cur->away = NULL; - cur->away_encoding = strdup(userinfo->away_encoding); + cur->away_encoding = g_strdup(userinfo->away_encoding); cur->away_len = userinfo->away_len; } else if (!(userinfo->flags & AIM_FLAG_AWAY)) { @@ -326,11 +326,11 @@ * If the user is not away, clear any cached away message now. */ if (cur->away) { - free(cur->away); + g_free(cur->away); cur->away = NULL; } if (cur->away_encoding) { - free(cur->away_encoding); + g_free(cur->away_encoding); cur->away_encoding = NULL; } cur->away_len = 0; @@ -401,8 +401,8 @@ del = od->locate.requested; od->locate.requested = del->next; was_explicit = FALSE; - free(del->sn); - free(del); + g_free(del->sn); + g_free(del); } cur = od->locate.requested; @@ -411,8 +411,8 @@ del = cur->next; cur->next = del->next; was_explicit = FALSE; - free(del->sn); - free(del); + g_free(del->sn); + g_free(del); } else cur = cur->next; } @@ -447,8 +447,8 @@ } /* Add a new node to our request queue */ - cur = (struct userinfo_node *)malloc(sizeof(struct userinfo_node)); - cur->sn = strdup(sn); + cur = (struct userinfo_node *)g_malloc(sizeof(struct userinfo_node)); + cur->sn = g_strdup(sn); cur->next = od->locate.torequest; od->locate.torequest = cur; @@ -502,7 +502,7 @@ cap[10], cap[11], cap[12], cap[13], cap[14], cap[15]); - free(cap); + g_free(cap); } return flags; @@ -531,7 +531,7 @@ if (!identified) purple_debug_misc("oscar", "unknown short capability: {%02x%02x}\n", cap[0], cap[1]); - free(cap); + g_free(cap); } return flags; @@ -586,16 +586,16 @@ void aim_info_free(aim_userinfo_t *info) { - free(info->sn); - free(info->iconcsum); - free(info->info); - free(info->info_encoding); - free(info->status); - free(info->status_encoding); - free(info->itmsurl); - free(info->itmsurl_encoding); - free(info->away); - free(info->away_encoding); + g_free(info->sn); + g_free(info->iconcsum); + g_free(info->info); + g_free(info->info_encoding); + g_free(info->status); + g_free(info->status_encoding); + g_free(info->itmsurl); + g_free(info->itmsurl_encoding); + g_free(info->away); + g_free(info->away_encoding); } /* @@ -829,7 +829,7 @@ case 0x0001: { /* A buddy icon checksum */ if ((length2 > 0) && ((number == 0x00) || (number == 0x01))) { - free(outinfo->iconcsum); + g_free(outinfo->iconcsum); outinfo->iconcsumtype = number; outinfo->iconcsum = byte_stream_getraw(bs, length2); outinfo->iconcsumlen = length2; @@ -838,8 +838,8 @@ } break; case 0x0002: { /* A status/available message */ - free(outinfo->status); - free(outinfo->status_encoding); + g_free(outinfo->status); + g_free(outinfo->status_encoding); if (length2 >= 4) { outinfo->status_len = byte_stream_get16(bs); outinfo->status = byte_stream_getstr(bs, outinfo->status_len); @@ -859,8 +859,8 @@ } break; case 0x0009: { /* An iTunes Music Store link */ - free(outinfo->itmsurl); - free(outinfo->itmsurl_encoding); + g_free(outinfo->itmsurl); + g_free(outinfo->itmsurl_encoding); if (length2 >= 4) { outinfo->itmsurl_len = byte_stream_get16(bs); outinfo->itmsurl = byte_stream_getstr(bs, outinfo->itmsurl_len); @@ -1013,8 +1013,8 @@ ret = userfunc(od, conn, frame, reason, sn); if (snac2) - free(snac2->data); - free(snac2); + g_free(snac2->data); + g_free(snac2); return ret; } @@ -1113,11 +1113,11 @@ /* Build the packet first to get real length */ if (profile) { /* no + 1 here because of %s */ - encoding = malloc(strlen(defencoding) + strlen(profile_encoding)); + encoding = g_malloc(strlen(defencoding) + strlen(profile_encoding)); snprintf(encoding, strlen(defencoding) + strlen(profile_encoding), defencoding, profile_encoding); aim_tlvlist_add_str(&tl, 0x0001, encoding); aim_tlvlist_add_raw(&tl, 0x0002, profile_len, (const guchar *)profile); - free(encoding); + g_free(encoding); } /* @@ -1130,11 +1130,11 @@ */ if (awaymsg) { if (awaymsg_len) { - encoding = malloc(strlen(defencoding) + strlen(awaymsg_encoding)); + encoding = g_malloc(strlen(defencoding) + strlen(awaymsg_encoding)); snprintf(encoding, strlen(defencoding) + strlen(awaymsg_encoding), defencoding, awaymsg_encoding); aim_tlvlist_add_str(&tl, 0x0003, encoding); aim_tlvlist_add_raw(&tl, 0x0004, awaymsg_len, (const guchar *)awaymsg); - free(encoding); + g_free(encoding); } else aim_tlvlist_add_noval(&tl, 0x0004); } @@ -1225,14 +1225,14 @@ aim_tlv_t *tlv = NULL; int was_explicit; - userinfo = (aim_userinfo_t *)malloc(sizeof(aim_userinfo_t)); + userinfo = (aim_userinfo_t *)g_malloc(sizeof(aim_userinfo_t)); aim_info_extract(od, bs, userinfo); tlvlist = aim_tlvlist_read(bs); /* Profile will be 1 and 2 */ userinfo->info_encoding = aim_tlv_getstr(tlvlist, 0x0001, 1); if ((tlv = aim_tlv_gettlv(tlvlist, 0x0002, 1))) { - userinfo->info = (char *)malloc(tlv->length); + userinfo->info = (char *)g_malloc(tlv->length); memcpy(userinfo->info, tlv->value, tlv->length); userinfo->info_len = tlv->length; } @@ -1240,7 +1240,7 @@ /* Away message will be 3 and 4 */ userinfo->away_encoding = aim_tlv_getstr(tlvlist, 0x0003, 1); if ((tlv = aim_tlv_gettlv(tlvlist, 0x0004, 1))) { - userinfo->away = (char *)malloc(tlv->length); + userinfo->away = (char *)g_malloc(tlv->length); memcpy(userinfo->away, tlv->value, tlv->length); userinfo->away_len = tlv->length; } @@ -1257,7 +1257,7 @@ aim_locate_adduserinfo(od, userinfo); userinfo2 = aim_locate_finduserinfo(od, userinfo->sn); aim_info_free(userinfo); - free(userinfo); + g_free(userinfo); /* * Remove this screen name from our queue. If the client requested @@ -1454,7 +1454,7 @@ del = od->locate.userinfo; od->locate.userinfo = od->locate.userinfo->next; aim_info_free(del); - free(del); + g_free(del); } }