X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fuser_rec.c;h=4dfd14fba66e59ee85654c39f9d622e7a7b8529a;hb=c47dba6b4de7529b354b79cf7f76c5fbb695d027;hp=90ffb0b995549443ce630451fcf7679290dd4f60;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/user_rec.c b/gom/user_rec.c index 90ffb0b..4dfd14f 100644 --- a/gom/user_rec.c +++ b/gom/user_rec.c @@ -247,6 +247,15 @@ void user_rec_subscribe() gedcom_subscribe_to_element(ELT_USER, user_elt_start, def_elt_end); } +void UNREFALLFUNC(user_data)(struct user_data *obj) +{ + if (obj) { + struct user_data* runner; + for (runner = obj; runner; runner = runner->next) + unref_xref_value(runner->xref_value); + } +} + void CLEANFUNC(user_data)(struct user_data* data) { if (data) { @@ -255,6 +264,14 @@ void CLEANFUNC(user_data)(struct user_data* data) } } +void UNREFALLFUNC(user_rec)(struct user_rec *obj) +{ + if (obj) { + unref_xref_value(obj->xref_value); + UNREFALLFUNC(user_data)(obj->extra); + } +} + void CLEANFUNC(user_rec)(struct user_rec* rec) { if (rec) { @@ -300,13 +317,14 @@ int write_user_data(Gedcom_write_hndl hndl, struct user_data* data) if (!data) return 1; - for (obj = data; data; data = data->next) { + for (obj = data; obj; obj = obj->next) { if (obj->xref_value) result |= gedcom_write_user_xref(hndl, obj->level, obj->tag, NULL, obj->xref_value); - else + else { result |= gedcom_write_user_str(hndl, obj->level, obj->tag, NULL, obj->str_value); + } } return result; }