rem: free(buffer);
add: wfree(buffer);
context: get_generic_value(WScreen *scr, char *instance, char *class, proplist_t option,		  Bool noDefault){    proplist_t value, key, dict;        value = NULL;    PLSetStringCmpHook(NULL);    if (class && instance) {	char *buffer = NULL;	buffer = wmalloc(strlen(class)+strlen(instance)+4);	key = PLMakeString(strcat(strcat(strcpy(buffer,instance),"."),class));	dict = PLGetDictionaryEntry(WDWindowAttributes->dictionary, key);	PLRelease(key);	free(buffer);	if (dict) {	    value = PLGetDictionaryEntry(dict, option);	}    }    if (!value && instance) {	key = PLMakeString(instance);		dict = PLGetDictionaryEntry(WDWindowAttributes->dictionary, key);	PLRelease(key);	if (dict) {	    value = PLGetDictionaryEntry(dict, option);	}    }    if (!value && class) {	key = PLMakeString(class);		dict = PLGetDictionaryEntry(WDWindowAttributes->dictionary, key);	PLRelease(key);	if (dict) {	    value = PLGetDictionaryEntry(dict, option);	}    }    if (!value && !noDefault) {	dict = PLGetDictionaryEntry(WDWindowAttributes->dictionary, AnyWindow);		if (dict) {	    value = PLGetDictionaryEntry(dict, option);	}    }        PLSetStringCmpHook(StringCompareHook);    return value;}