struct strlist *strlist__new(bool dupstr, const char *slist) { struct strlist *self = malloc(sizeof(*self)); if (self != NULL) { self->entries = RB_ROOT; self->dupstr = dupstr; self->nr_entries = 0; if (slist && strlist__parse_list(self, slist) != 0) goto out_error; } return self; out_error: free(self); return NULL; }
struct strlist *strlist__new(bool dupstr, const char *list) { struct strlist *slist = malloc(sizeof(*slist)); if (slist != NULL) { rblist__init(&slist->rblist); slist->rblist.node_cmp = strlist__node_cmp; slist->rblist.node_new = strlist__node_new; slist->rblist.node_delete = strlist__node_delete; slist->dupstr = dupstr; if (list && strlist__parse_list(slist, list) != 0) goto out_error; } return slist; out_error: free(slist); return NULL; }