libpurple/xfer.c

changeset 39892
4fb59abd727e
parent 39858
0f2be88d88e4
child 40146
66604f791698
--- a/libpurple/xfer.c	Mon Sep 30 23:48:55 2019 -0400
+++ b/libpurple/xfer.c	Tue Oct 01 02:21:00 2019 -0400
@@ -1381,10 +1381,13 @@
 				/* Need to indicate the protocol is still ready... */
 				priv->ready |= PURPLE_XFER_READY_PROTOCOL;
 
+				g_free(buffer);
 				g_return_if_reached();
 			}
-			if (result < 0)
+			if (result < 0) {
+				g_free(buffer);
 				return;
+			}
 		}
 
 		if (priv->buffer) {
@@ -1433,13 +1436,13 @@
 		if (klass && klass->ack)
 			klass->ack(xfer, buffer, r);
 
-		g_free(buffer);
-
 		if (ui_ops != NULL && ui_ops->update_progress != NULL)
 			ui_ops->update_progress(xfer,
 				purple_xfer_get_progress(xfer));
 	}
 
+	g_free(buffer);
+
 	if (purple_xfer_get_bytes_sent(xfer) >= purple_xfer_get_size(xfer) &&
 			!purple_xfer_is_completed(xfer)) {
 		purple_xfer_set_completed(xfer, TRUE);

mercurial