summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorfain <devnull@localhost>2017-03-25 23:46:55 -0500
committerfain <devnull@localhost>2017-03-25 23:46:55 -0500
commitdea465676804d655d55c50debd3027755285e350 (patch)
tree21ef07f90e06dadaee88e6e2a8cf360ce94b4cd8
parent06485acec6454873fd73c7dfde5a2b88fc4bb605 (diff)
downloadpidgin-dea465676804d655d55c50debd3027755285e350.tar.gz
Applying fain's patch which fixes 15755
-rw-r--r--libpurple/ft.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/libpurple/ft.c b/libpurple/ft.c
index fb83ef09a2..c15efcfa70 100644
--- a/libpurple/ft.c
+++ b/libpurple/ft.c
@@ -916,9 +916,10 @@ void
purple_xfer_set_message(PurpleXfer *xfer, const char *message)
{
g_return_if_fail(xfer != NULL);
-
- g_free(xfer->message);
- xfer->message = g_strdup(message);
+ if (message != xfer->message) {
+ g_free(xfer->message);
+ xfer->message = g_strdup(message);
+ }
}
void
@@ -926,8 +927,10 @@ purple_xfer_set_filename(PurpleXfer *xfer, const char *filename)
{
g_return_if_fail(xfer != NULL);
- g_free(xfer->filename);
- xfer->filename = g_strdup(filename);
+ if (filename != xfer->filename) {
+ g_free(xfer->filename);
+ xfer->filename = g_strdup(filename);
+ }
}
void
@@ -935,8 +938,10 @@ purple_xfer_set_local_filename(PurpleXfer *xfer, const char *filename)
{
g_return_if_fail(xfer != NULL);
- g_free(xfer->local_filename);
- xfer->local_filename = g_strdup(filename);
+ if (filename != xfer->local_filename) {
+ g_free(xfer->local_filename);
+ xfer->local_filename = g_strdup(filename);
+ }
}
void
@@ -1781,8 +1786,9 @@ purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail,
{
PurpleXferPrivData *priv = g_hash_table_lookup(xfers_data, xfer);
- g_free(priv->thumbnail_data);
- g_free(priv->thumbnail_mimetype);
+ /* Hold onto these in case they are equal to passed-in pointers */
+ gpointer *old_thumbnail_data = priv->thumbnail_data;
+ const gchar *old_mimetype = priv->thumbnail_mimetype;
if (thumbnail && size > 0) {
priv->thumbnail_data = g_memdup(thumbnail, size);
@@ -1793,6 +1799,10 @@ purple_xfer_set_thumbnail(PurpleXfer *xfer, gconstpointer thumbnail,
priv->thumbnail_size = 0;
priv->thumbnail_mimetype = NULL;
}
+
+ /* Now it's safe to free the pointers */
+ g_free(old_thumbnail_data);
+ g_free(old_mimetype);
}
void