rem: name = PLGetDescriptionIndent(defaults->defaults, 0); puts(name); free(name);
context: WMGetDefaultsFromPath(char *path){    WMUserDefaults *defaults;    proplist_t domain;    proplist_t key;    char *name;    int i;    assert(path != NULL);    if (sharedDefaultsList) {        defaults = *sharedDefaultsList;        while (defaults) {            if (strcmp(defaults->path, path) == 0)                return defaults;            defaults = defaults->next;        }    }    /* we didn't found the database we are looking for. Go read it. */    defaults = wmalloc(sizeof(WMUserDefaults));    memset(defaults, 0, sizeof(WMUserDefaults));    defaults->defaults = PLMakeDictionaryFromEntries(NULL, NULL, NULL);    defaults->searchList = wmalloc(sizeof(proplist_t)*2);    /* the domain we want go first */    name = strrchr(path, '/');    if (!name)        name = path;    else        name++;    key = PLMakeString(name);    defaults->searchList[0] = key;    domain = PLGetProplistWithPath(path);    if (!domain) {        proplist_t p;        domain = PLMakeDictionaryFromEntries(NULL, NULL, NULL);        p = PLMakeString(path);        PLSetFilename(domain, p);        PLRelease(p);    }    defaults->path = wstrdup(path);    defaults->appDomain = domain;    if (domain)        PLInsertDictionaryEntry(defaults->defaults, key, domain);    PLRelease(key);    /* terminate list */    defaults->searchList[1] = NULL;    defaults->searchListArray=PLMakeArrayFromElements(NULL,NULL);    i = 0;    while (defaults->searchList[i]) {        PLAppendArrayElement(defaults->searchListArray,                             defaults->searchList[i]);        i++;    }    if (sharedDefaultsList)        defaults->next = *sharedDefaultsList;    sharedDefaultsList = &defaults;    registerSaveOnExit();    name = PLGetDescriptionIndent(defaults->defaults, 0);    puts(name);    free(name);    return defaults;}