rem: domain = WMCreatePLDictionary(NULL, NULL, NULL);
add: domain = WMCreatePLDictionary(NULL, NULL);
context: WMGetDefaultsFromPath(char *path){    WMUserDefaults *defaults;    WMPropList *domain;    WMPropList *key;    struct stat stbuf;    char *name;    int i;    assert(path != NULL);    if (sharedUserDefaults) {        defaults = sharedUserDefaults;        while (defaults) {            if (defaults->path && 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 = WMCreatePLDictionary(NULL, NULL, NULL);    defaults->searchList = wmalloc(sizeof(WMPropList*)*2);    /* the domain we want, go in the first position */    name = strrchr(path, '/');    if (!name)        name = path;    else        name++;    key = WMCreatePLString(name);    defaults->searchList[0] = key;    if (stat(path, &stbuf) >= 0)        defaults->timestamp = stbuf.st_mtime;    domain = WMReadPropListFromFile(path);    if (!domain)        domain = WMCreatePLDictionary(NULL, NULL, NULL);    defaults->path = wstrdup(path);    defaults->appDomain = domain;    if (domain)        WMPutInPLDictionary(defaults->defaults, key, domain);    /* terminate list */    defaults->searchList[1] = NULL;    defaults->searchListArray = WMCreatePLArray(NULL,NULL);    i = 0;    while (defaults->searchList[i]) {        WMAddToPLArray(defaults->searchListArray,                       defaults->searchList[i]);        i++;    }    if (sharedUserDefaults)        defaults->next = sharedUserDefaults;    sharedUserDefaults = defaults;    addSynchronizeTimerHandler();    registerSaveOnExit();    return defaults;}