X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fmultimedia_link.c;h=44e9a2df79d6afec7bcabc99eeb2f827fdb93d46;hb=f197c791489f1537db4aebc7ce29b6d4f9adc2b3;hp=147b838fa7e0204f67f5d65785ca4554bfc8d434;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/multimedia_link.c b/gom/multimedia_link.c index 147b838..44e9a2d 100644 --- a/gom/multimedia_link.c +++ b/gom/multimedia_link.c @@ -44,12 +44,8 @@ Gedcom_ctxt sub_obje_start(_ELT_PARAMS_) if (! ctxt) NO_CONTEXT; else { - struct multimedia_link *mm - = (struct multimedia_link *)malloc(sizeof(struct multimedia_link)); - if (! mm) - MEMORY_ERROR; - else { - memset (mm, 0, sizeof(struct multimedia_link)); + struct multimedia_link *mm = SUB_MAKEFUNC(multimedia_link)(); + if (mm) { if (GEDCOM_IS_XREF_PTR(parsed_value)) mm->reference = GEDCOM_XREF_PTR(parsed_value); @@ -83,6 +79,8 @@ Gedcom_ctxt sub_obje_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } +DEFINE_SUB_MAKEFUNC(multimedia_link) + DEFINE_STRING_CB(multimedia_link, sub_obje_form_start, form) DEFINE_STRING_CB(multimedia_link, sub_obje_titl_start, title) DEFINE_STRING_CB(multimedia_link, sub_obje_file_start, file) @@ -102,6 +100,18 @@ void multimedia_link_subscribe() sub_obje_file_start, def_elt_end); } +void UNREFALLFUNC(multimedia_link)(struct multimedia_link* obj) +{ + if (obj) { + struct multimedia_link* runner; + for (runner = obj; runner; runner = runner->next) { + unref_xref_value(runner->reference); + UNREFALLFUNC(note_sub)(runner->note); + UNREFALLFUNC(user_data)(runner->extra); + } + } +} + void CLEANFUNC(multimedia_link)(struct multimedia_link* mm) { if (mm) {