As pointed by Coverity, the PLStrings created to store the information on the texture leak. 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 PLStrings won't be freed.
This patch release the PLStrings once after adding them to the PLArray so the count will go back to 1, which means they will be properly freed when the PLArray will be released. Took opportunity to remove the call to WMRetainPropList on the titem-prop because it artificially increases the refCount but this is already done when adding to the PLArray. Signed-off-by: Christophe CURIS <[email protected]> --- WPrefs.app/Appearance.c | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/WPrefs.app/Appearance.c b/WPrefs.app/Appearance.c index c8cbc75..276933b 100644 --- a/WPrefs.app/Appearance.c +++ b/WPrefs.app/Appearance.c @@ -2207,11 +2207,16 @@ static void prepareForClose(_Panel * panel) /* store list of textures */ for (i = 8; i < WMGetListNumberOfRows(panel->texLs); i++) { + WMPropList *pl_title, *pl_path; + item = WMGetListItem(panel->texLs, i); titem = (TextureListItem *) item->clientData; - texture = WMCreatePLArray(WMCreatePLString(titem->title), - WMRetainPropList(titem->prop), WMCreatePLString(titem->path), NULL); + pl_title = WMCreatePLString(titem->title); + pl_path = WMCreatePLString(titem->path); + texture = WMCreatePLArray(pl_title, titem->prop, pl_path, NULL); + WMReleasePropList(pl_title); + WMReleasePropList(pl_path); WMAddToPLArray(textureList, texture); } -- 2.1.3 -- To unsubscribe, send mail to [email protected].
