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);
 	}
 }