From 54feb499cbd22d748bab8e82bb25039f0bb84d1b Mon Sep 17 00:00:00 2001 From: Christophe CURIS Date: Sat, 29 Nov 2014 16:35:28 +0100 Subject: [PATCH] WPrefs: fix memory leak when storing the list of colors in Appearence panel The name of the color is stored in a newly created PLString which leaks. This is due to the fact that they are created with a refCount of 1, then the PLArray in which they are placed increments that count, so at list destruction the count would return to 1 instead of 0, meaning the PLString won't be freed. This patch properly calls WMReleasePropList after addition to the list, so that the count goes back to 1, which means it will be automatically freed when the PLArray will be released. Signed-off-by: Christophe CURIS --- WPrefs.app/Appearance.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/WPrefs.app/Appearance.c b/WPrefs.app/Appearance.c index 7e22dec9..25f14223 100644 --- a/WPrefs.app/Appearance.c +++ b/WPrefs.app/Appearance.c @@ -2222,11 +2222,14 @@ static void prepareForClose(_Panel * panel) for (i = 0; i < wlengthof(sample_colors); i++) { WMColor *color; char *str; + WMPropList *pl_color; color = WMGetColorWellColor(panel->sampW[i]); str = WMGetColorRGBDescription(color); - WMAddToPLArray(textureList, WMCreatePLString(str)); + pl_color = WMCreatePLString(str); + WMAddToPLArray(textureList, pl_color); + WMReleasePropList(pl_color); wfree(str); } WMSetUDObjectForKey(udb, textureList, "ColorList");