X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fsource_event.c;h=6e353b962b587548095f716020b522be011b3e2c;hb=58c7f618a6964a7fa5fc95c67f13f0a52689a29a;hp=51a4b60cc765ff33782fc41475a4482afdb58efe;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/source_event.c b/gom/source_event.c index 51a4b60..6e353b9 100644 --- a/gom/source_event.c +++ b/gom/source_event.c @@ -38,12 +38,8 @@ Gedcom_ctxt sub_sour_even_start(_ELT_PARAMS_) if (! ctxt) NO_CONTEXT; else { - struct source_event *evt - = (struct source_event *)malloc(sizeof(struct source_event)); - if (! evt) - MEMORY_ERROR; - else { - memset (evt, 0, sizeof(struct source_event)); + struct source_event *evt = SUB_MAKEFUNC(source_event)(); + if (evt) { evt->recorded_events = strdup(GEDCOM_STRING(parsed_value)); if (! evt->recorded_events) { @@ -65,6 +61,8 @@ Gedcom_ctxt sub_sour_even_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } +DEFINE_SUB_MAKEFUNC(source_event) + DEFINE_DATE_CB(source_event, sub_sour_even_date_start, date_period) DEFINE_STRING_CB(source_event, sub_sour_even_plac_start, jurisdiction) @@ -80,6 +78,16 @@ void source_event_subscribe() sub_sour_even_plac_start, def_elt_end); } +void UNREFALLFUNC(source_event)(struct source_event* obj) +{ + if (obj) { + struct source_event* runner; + for (runner = obj; runner; runner = runner->next) { + UNREFALLFUNC(user_data)(runner->extra); + } + } +} + void CLEANFUNC(source_event)(struct source_event* evt) { if (evt) {