rem: free(str); free(str2);
add: wfree(str); wfree(str2);
context: GetTexturePanelTexture(TexturePanel *panel){    proplist_t prop = NULL;    WMColor *color;    char *str, *str2;    char buff[32];    int i;    switch (WMGetPopUpButtonSelectedItem(panel->typeP)) {     case TYPE_SOLID:	color = WMGetColorWellColor(panel->defcW);	str = WMGetColorRGBDescription(color);	prop = PLMakeArrayFromElements(PLMakeString("solid"),				       PLMakeString(str), NULL);	free(str);	break;     case TYPE_PIXMAP:	color = WMGetColorWellColor(panel->defcW);	str = WMGetColorRGBDescription(color);	switch (WMGetPopUpButtonSelectedItem(panel->arrP)) {	 case PTYPE_SCALE:	    prop = PLMakeArrayFromElements(PLMakeString("spixmap"), 					   PLMakeString(panel->imageFile),					   PLMakeString(str), NULL);	    break;	 case PTYPE_MAXIMIZE:	    prop = PLMakeArrayFromElements(PLMakeString("mpixmap"), 					   PLMakeString(panel->imageFile),					   PLMakeString(str), NULL);	    break;	 case PTYPE_CENTER:	    prop = PLMakeArrayFromElements(PLMakeString("cpixmap"), 					   PLMakeString(panel->imageFile),					   PLMakeString(str), NULL);	    break;	 case PTYPE_TILE:	    prop = PLMakeArrayFromElements(PLMakeString("tpixmap"),					   PLMakeString(panel->imageFile),					   PLMakeString(str), NULL);	    break;	}	free(str);	break;     case TYPE_TGRADIENT:	color = WMGetColorWellColor(panel->tcol1W);	str = WMGetColorRGBDescription(color);	color = WMGetColorWellColor(panel->tcol2W);	str2 = WMGetColorRGBDescription(color);	sprintf(buff, "%i", WMGetSliderValue(panel->topaS));	if (WMGetButtonSelected(panel->dirdB)) {	    prop = PLMakeArrayFromElements(PLMakeString("tdgradient"),					   PLMakeString(panel->imageFile),					   PLMakeString(buff),					   PLMakeString(str),					   PLMakeString(str2), NULL);	} else 	if (WMGetButtonSelected(panel->dirvB)) {	    prop = PLMakeArrayFromElements(PLMakeString("tvgradient"),					   PLMakeString(panel->imageFile),					   PLMakeString(buff),					   PLMakeString(str),					   PLMakeString(str2), NULL);	} else {	    prop = PLMakeArrayFromElements(PLMakeString("thgradient"),					   PLMakeString(panel->imageFile),					   PLMakeString(buff),					   PLMakeString(str),					   PLMakeString(str2), NULL);	}	free(str);	free(str2);	break;     case TYPE_SGRADIENT:	color = WMGetColorWellColor(panel->tcol1W);	str = WMGetColorRGBDescription(color);	color = WMGetColorWellColor(panel->tcol2W);	str2 = WMGetColorRGBDescription(color);		if (WMGetButtonSelected(panel->dirdB)) {	    prop = PLMakeArrayFromElements(PLMakeString("dgradient"),					   PLMakeString(str),					   PLMakeString(str2), NULL);	} else 	if (WMGetButtonSelected(panel->dirvB)) {	    prop = PLMakeArrayFromElements(PLMakeString("vgradient"),					   PLMakeString(str),					   PLMakeString(str2), NULL);	} else {	    prop = PLMakeArrayFromElements(PLMakeString("hgradient"),					   PLMakeString(str),					   PLMakeString(str2), NULL);	}	free(str);	free(str2);	break;     case TYPE_GRADIENT:	color = WMGetColorWellColor(panel->defcW);	str = WMGetColorRGBDescription(color);	if (WMGetButtonSelected(panel->dirdB)) {	    prop = PLMakeArrayFromElements(PLMakeString("mdgradient"),					   PLMakeString(str), NULL);	} else 	if (WMGetButtonSelected(panel->dirvB)) {	    prop = PLMakeArrayFromElements(PLMakeString("mvgradient"),					   PLMakeString(str), NULL);	} else {	    prop = PLMakeArrayFromElements(PLMakeString("mhgradient"),					   PLMakeString(str), NULL);	}	free(str);	for (i = 0; i < WMGetListNumberOfRows(panel->gcolL); i++) {	    RColor *rgb;	    WMListItem *item;	    	    item = WMGetListItem(panel->gcolL, i);	    	    rgb = (RColor*)item->clientData;	    sprintf(buff, "#%02x%02x%02x", rgb->red, rgb->green, rgb->blue);	    PLAppendArrayElement(prop, PLMakeString(buff));	}	break;    }    return prop;}