From 92365eca0f9a6f054abc70489c009aba0fcde0ff Mon Sep 17 00:00:00 2001 From: Mathias Buhr Date: Sat, 22 Apr 2017 01:14:49 +0200 Subject: [PATCH] Fixes a use-after-free --- src/Fl_Widget.cxx | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/Fl_Widget.cxx b/src/Fl_Widget.cxx index 321a39a..a8be544 100644 --- a/src/Fl_Widget.cxx +++ b/src/Fl_Widget.cxx @@ -282,11 +282,11 @@ Fl_Widget::label(const char *a) { void Fl_Widget::copy_label(const char *a) { - if (flags() & COPIED_LABEL) free((void *)(label_.value)); - if ( ( !a || !label_.value ) || strcmp( a, label_.value ) ) redraw_label(); + if (flags() & COPIED_LABEL) free((void *)(label_.value)); + if (a) { set_flag(COPIED_LABEL); label_.value=strdup(a); @@ -294,6 +294,7 @@ Fl_Widget::copy_label(const char *a) { clear_flag(COPIED_LABEL); label_.value=(char *)0; } + } /** Calls the widget callback.