summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthias Clasen <mclasen@redhat.com>2020-11-11 12:24:35 -0500
committerMatthias Clasen <mclasen@redhat.com>2020-11-11 12:24:35 -0500
commit82b855cc4b4127bd5f1f8b41a8808433375c0bd7 (patch)
treeaa90227a1a815803c5e142f65248b7be5e968d4f
parent0db504edde63eb77e801a5b8f4e70008e77d64dd (diff)
downloadgtk+-82b855cc4b4127bd5f1f8b41a8808433375c0bd7.tar.gz
label: Avoid a needless strdup
Don't duplicate the string before we know if it has actually changed.
-rw-r--r--gtk/gtklabel.c23
1 files changed, 10 insertions, 13 deletions
diff --git a/gtk/gtklabel.c b/gtk/gtklabel.c
index 26c6419460..3d82096bfb 100644
--- a/gtk/gtklabel.c
+++ b/gtk/gtklabel.c
@@ -450,7 +450,7 @@ static gboolean gtk_label_query_tooltip (GtkWidget *widget,
static void gtk_label_set_text_internal (GtkLabel *self,
char *str);
static gboolean gtk_label_set_label_internal (GtkLabel *self,
- char *str);
+ const char *str);
static gboolean gtk_label_set_use_markup_internal (GtkLabel *self,
gboolean val);
static gboolean gtk_label_set_use_underline_internal (GtkLabel *self,
@@ -1703,17 +1703,14 @@ gtk_label_set_text_internal (GtkLabel *self,
}
static gboolean
-gtk_label_set_label_internal (GtkLabel *self,
- char *str)
+gtk_label_set_label_internal (GtkLabel *self,
+ const char *str)
{
if (g_strcmp0 (str, self->label) == 0)
- {
- g_free (str);
- return FALSE;
- }
+ return FALSE;
g_free (self->label);
- self->label = str;
+ self->label = g_strdup (str ? str : "");
g_object_notify_by_pspec (G_OBJECT (self), label_props[PROP_LABEL]);
@@ -1809,7 +1806,7 @@ gtk_label_set_text (GtkLabel *self,
g_object_freeze_notify (G_OBJECT (self));
- if (gtk_label_set_label_internal (self, g_strdup (str ? str : "")) ||
+ if (gtk_label_set_label_internal (self, str) ||
gtk_label_set_use_markup_internal (self, FALSE) ||
gtk_label_set_use_underline_internal (self, FALSE))
gtk_label_recalculate (self);
@@ -1894,7 +1891,7 @@ gtk_label_set_label (GtkLabel *self,
g_object_freeze_notify (G_OBJECT (self));
- if (gtk_label_set_label_internal (self, g_strdup (str ? str : "")))
+ if (gtk_label_set_label_internal (self, str))
gtk_label_recalculate (self);
g_object_thaw_notify (G_OBJECT (self));
@@ -2419,7 +2416,7 @@ gtk_label_set_markup (GtkLabel *self,
g_object_freeze_notify (G_OBJECT (self));
- if (gtk_label_set_label_internal (self, g_strdup (str ? str : "")) ||
+ if (gtk_label_set_label_internal (self, str) ||
gtk_label_set_use_markup_internal (self, TRUE) ||
gtk_label_set_use_underline_internal (self, FALSE))
gtk_label_recalculate (self);
@@ -2450,7 +2447,7 @@ gtk_label_set_markup_with_mnemonic (GtkLabel *self,
g_object_freeze_notify (G_OBJECT (self));
- if (gtk_label_set_label_internal (self, g_strdup (str ? str : "")) ||
+ if (gtk_label_set_label_internal (self, str) ||
gtk_label_set_use_markup_internal (self, TRUE) ||
gtk_label_set_use_underline_internal (self, TRUE))
gtk_label_recalculate (self);
@@ -3572,7 +3569,7 @@ gtk_label_set_text_with_mnemonic (GtkLabel *self,
g_object_freeze_notify (G_OBJECT (self));
- if (gtk_label_set_label_internal (self, g_strdup (str)) ||
+ if (gtk_label_set_label_internal (self, str) ||
gtk_label_set_use_markup_internal (self, FALSE) ||
gtk_label_set_use_underline_internal (self, TRUE))
gtk_label_recalculate (self);