libpurple/protocols/simple/sipmsg.c

changeset 40077
b5d8e7f5b5ce
parent 40053
abbd9caef452
child 40414
744c1e9d80f1
child 40439
e9838d634d5e
--- a/libpurple/protocols/simple/sipmsg.c	Fri Oct 25 07:54:39 2019 +0000
+++ b/libpurple/protocols/simple/sipmsg.c	Fri Oct 25 05:11:46 2019 -0400
@@ -177,15 +177,16 @@
 	msg->headers = g_slist_append(msg->headers, element);
 }
 
+static void
+sipmsg_free_header(struct siphdrelement *elem)
+{
+	g_free(elem->name);
+	g_free(elem->value);
+	g_free(elem);
+}
+
 void sipmsg_free(struct sipmsg *msg) {
-	struct siphdrelement *elem;
-	while(msg->headers) {
-		elem = msg->headers->data;
-		msg->headers = g_slist_remove(msg->headers,elem);
-		g_free(elem->name);
-		g_free(elem->value);
-		g_free(elem);
-	}
+	g_slist_free_full(msg->headers, (GDestroyNotify)sipmsg_free_header);
 	g_free(msg->method);
 	g_free(msg->target);
 	g_free(msg->body);
@@ -197,9 +198,7 @@
 	if(tmp) {
 		struct siphdrelement *elem = tmp->data;
 		msg->headers = g_slist_delete_link(msg->headers, tmp);
-		g_free(elem->name);
-		g_free(elem->value);
-		g_free(elem);
+		sipmsg_free_header(elem);
 	}
 }
 

mercurial