summaryrefslogtreecommitdiff
path: root/src/Fl_Widget.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'src/Fl_Widget.cxx')
-rw-r--r--src/Fl_Widget.cxx9
1 files changed, 5 insertions, 4 deletions
diff --git a/src/Fl_Widget.cxx b/src/Fl_Widget.cxx
index 79cafa2c4..50139cb22 100644
--- a/src/Fl_Widget.cxx
+++ b/src/Fl_Widget.cxx
@@ -303,13 +303,14 @@ Fl_Widget::label(const char *a) {
void
Fl_Widget::copy_label(const char *a) {
- if (flags() & COPIED_LABEL) free((void *)(label_.value));
+ // reassigning a copied label remains the same copied label
+ if ((flags() & COPIED_LABEL) && (label_.value == a))
+ return;
if (a) {
+ label(strdup(a));
set_flag(COPIED_LABEL);
- label_.value=strdup(a);
} else {
- clear_flag(COPIED_LABEL);
- label_.value=(char *)0;
+ label(0);
}
redraw_label();
}