From 9622febaa54bdfca3927912d7f544447b3780c4c Mon Sep 17 00:00:00 2001 From: corvid Date: Mon, 1 Aug 2011 04:37:16 +0000 Subject: deal with Fl_Text_Buffer::text() returning a copy --- dw/fltkui.cc | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) (limited to 'dw/fltkui.cc') diff --git a/dw/fltkui.cc b/dw/fltkui.cc index 788df084..f071d910 100644 --- a/dw/fltkui.cc +++ b/dw/fltkui.cc @@ -605,6 +605,7 @@ FltkMultiLineTextResource::FltkMultiLineTextResource (FltkPlatform *platform, FltkSpecificResource (platform) { buffer = new Fl_Text_Buffer; + text_copy = NULL; editable = false; numCols = cols; @@ -628,6 +629,8 @@ FltkMultiLineTextResource::~FltkMultiLineTextResource () /* Free memory avoiding a double-free of text buffers */ ((Fl_Text_Editor *) widget)->buffer (0); delete buffer; + if (text_copy) + free(text_copy); } Fl_Widget *FltkMultiLineTextResource::createNewWidget (core::Allocation @@ -678,7 +681,13 @@ void FltkMultiLineTextResource::sizeRequest (core::Requisition *requisition) const char *FltkMultiLineTextResource::getText () { - return buffer->text (); + /* FLTK-1.3 insists upon returning a new copy of the buffer text, so + * we have to keep track of it. + */ + if (text_copy) + free(text_copy); + text_copy = buffer->text(); + return text_copy; } void FltkMultiLineTextResource::setText (const char *text) -- cgit v1.2.3