diff libpurple/protocols/msn/oim.c @ 20495:7f5564ebde7f

Fix some memory leaks. Free xmlnodes properly using xmlnode_free instead of g_free.
author Sadrul Habib Chowdhury <imadil@gmail.com>
date Sun, 09 Sep 2007 00:43:22 +0000
parents 2d8999540239
children 7e7add38a02f
line wrap: on
line diff
--- a/libpurple/protocols/msn/oim.c	Sat Sep 08 03:34:49 2007 +0000
+++ b/libpurple/protocols/msn/oim.c	Sun Sep 09 00:43:22 2007 +0000
@@ -168,7 +168,7 @@
 	xmlnode *responseNode, *bodyNode;
 	xmlnode	*faultNode, *faultCodeNode, *faultstringNode;
 	xmlnode *detailNode, *challengeNode;
-	char *faultCodeStr, *faultstring;
+	char *faultCodeStr = NULL, *faultstring = NULL;
 
 	responseNode = xmlnode_from_str(body,len);
 	g_return_if_fail(responseNode != NULL);
@@ -226,6 +226,8 @@
 	msn_oim_send_msg(oim);
 
 oim_send_process_fail:
+	g_free(faultstring);
+	g_free(faultCodeStr);
 	xmlnode_free(responseNode);
 	return ;
 }
@@ -528,20 +530,19 @@
 static void
 msn_oim_get_process(MsnOim *oim, const char *oim_msg)
 {
-	xmlnode *oimNode,*bodyNode,*responseNode,*msgNode;
-	char *msg_data,*msg_str;
+	xmlnode *oim_node,*bodyNode,*responseNode,*msgNode;
+	char *msg_str;
 
-	oimNode = xmlnode_from_str(oim_msg, strlen(oim_msg));
-	bodyNode = xmlnode_get_child(oimNode,"Body");
+	oim_node = xmlnode_from_str(oim_msg, strlen(oim_msg));
+	bodyNode = xmlnode_get_child(oim_node,"Body");
 	responseNode = xmlnode_get_child(bodyNode,"GetMessageResponse");
 	msgNode = xmlnode_get_child(responseNode,"GetMessageResult");
-	msg_data = xmlnode_get_data(msgNode);
-	msg_str = g_strdup(msg_data);
-	g_free(msg_data);
+	msg_str = xmlnode_get_data(msgNode);
 	purple_debug_info("OIM","msg:{%s}\n",msg_str);
 	msn_oim_report_to_user(oim,msg_str);
 
 	g_free(msg_str);
+	xmlnode_free(oim_node);
 }
 
 static void
@@ -635,6 +636,7 @@
 		rTime = NULL;
 		g_free(nickname);
 	}
+	g_free(unread);
 	xmlnode_free(node);
 }