X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fpersonal_name.c;h=18f3efbb3e134fdfadd7ec6dd99cf09822d61285;hb=35764d508082ff9223b631da8959e1494d05e60a;hp=fce4ca7d346850c8c9a180e041ebca5a49e0bad9;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/personal_name.c b/gom/personal_name.c index fce4ca7..18f3efb 100644 --- a/gom/personal_name.c +++ b/gom/personal_name.c @@ -38,12 +38,8 @@ Gedcom_ctxt sub_name_start(_ELT_PARAMS_) Gom_ctxt result = NULL; if (ctxt) { - struct personal_name *name - = (struct personal_name *)malloc(sizeof(struct personal_name)); - if (! name) - MEMORY_ERROR; - else { - memset (name, 0, sizeof(struct personal_name)); + struct personal_name *name = SUB_MAKEFUNC(personal_name)(); + if (name) { name->name = strdup(GEDCOM_STRING(parsed_value)); if (! name->name) { @@ -65,6 +61,8 @@ Gedcom_ctxt sub_name_start(_ELT_PARAMS_) return (Gedcom_ctxt)result; } +DEFINE_SUB_MAKEFUNC(personal_name) + DEFINE_STRING_CB(personal_name, sub_name_npfx_start, prefix) DEFINE_STRING_CB(personal_name, sub_name_givn_start, given) DEFINE_STRING_CB(personal_name, sub_name_nick_start, nickname) @@ -93,6 +91,18 @@ void name_subscribe() def_elt_end); } +void UNREFALLFUNC(personal_name)(struct personal_name* obj) +{ + if (obj) { + struct personal_name* runner; + for (runner = obj; runner; runner = runner->next) { + UNREFALLFUNC(source_citation)(runner->citation); + UNREFALLFUNC(note_sub)(runner->note); + UNREFALLFUNC(user_data)(runner->extra); + } + } +} + void CLEANFUNC(personal_name)(struct personal_name* name) { if (name) {