Always let (deprecated) FindColour() return a new instance of a found colour, because otherwise multiple calls to FindColour() will share the same wxColour; Added a wxLogDebug message when FindColour() is used because it shouldn't be used without modifying user-code probably (Returned wxColours must now be released).

git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@24920 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775
This commit is contained in:
Dimitri Schoolwerth
2003-12-19 02:09:01 +00:00
parent 0c65afdb45
commit 98de2b6805

View File

@@ -473,6 +473,15 @@ wxString wxColourDatabase::FindName(const wxColour& colour) const
wxColour *wxColourDatabase::FindColour(const wxString& name)
{
// This function is deprecated, use Find() instead.
// Formerly this function sometimes would return a deletable pointer and
// sometimes a non-deletable one (when returning a colour from the database).
// Trying to delete the latter anyway results in problems, so probably
// nobody ever freed the pointers. Currently it always returns a new
// instance, which means there will be memory leaks.
wxLogDebug(wxT("wxColourDataBase::FindColour():")
wxT(" Please use wxColourDataBase::Find() instead"));
// using a static variable here is not the most elegant solution but unless
// we want to make wxStringToColourHashMap public (i.e. move it to the
// header) so that we could have a member function returning
@@ -481,13 +490,14 @@ wxColour *wxColourDatabase::FindColour(const wxString& name)
//
// and knowing that this function is going to disappear in the next release
// anyhow I don't want to waste time on this
static wxColour s_col;
s_col = Find(name);
if ( !s_col.Ok() )
return NULL;
return &s_col;
return new wxColour(s_col);
}
// ============================================================================