X-Git-Url: https://git.dlugolecki.net.pl/?a=blobdiff_plain;f=gom%2Fsubmission.c;h=cbdde5624537038d57f5c6845fc830d97168daef;hb=8073f669d16f11bfd50d42bb2cf6fdb79d358565;hp=3ecee29232686349a6d31381e6ab90d53188eecc;hpb=72689522e287ca3b2231e7d8881f0fe5bea48f15;p=gedcom-parse.git diff --git a/gom/submission.c b/gom/submission.c index 3ecee29..cbdde56 100644 --- a/gom/submission.c +++ b/gom/submission.c @@ -55,7 +55,15 @@ void submission_subscribe() gedcom_subscribe_to_element(ELT_SUBN_RIN, subn_rin_start, def_elt_end); } -void submission_cleanup() +void UNREFALLFUNC(submission)() +{ + if (gom_submission) { + unref_xref_value(gom_submission->submitter); + UNREFALLFUNC(user_data)(gom_submission->extra); + } +} + +void CLEANFUNC(submission)() { if (gom_submission) { SAFE_FREE(gom_submission->xrefstr); @@ -66,8 +74,8 @@ void submission_cleanup() SAFE_FREE(gom_submission->ordinance_process_flag); SAFE_FREE(gom_submission->record_id); DESTROY_CHAIN_ELTS(user_data, gom_submission->extra); - SAFE_FREE(gom_submission); } + SAFE_FREE(gom_submission); } struct submission* gom_get_submission() @@ -95,8 +103,7 @@ void DESTROYFUNC(submission)() { if (gom_submission) { submission_cleanup(); - free(gom_submission); - gom_submission = NULL; + SAFE_FREE(gom_submission); } } @@ -127,8 +134,10 @@ int DELETEFUNC(submission)() int result = 1; if (gom_submission) { result = gedcom_delete_xref(gom_submission->xrefstr); - if (result == 0) + if (result == 0) { + UNREFALLFUNC(submission)(); DESTROYFUNC(submission)(); + } } return result; }