struct submission* gom_submission = NULL;
-DEFINE_MAKELINKFUNC(submission, XREF_SUBN)
-
DEFINE_REC_CB(submission, subn_start)
DEFINE_XREF_CB(submission, subn_subm_start, submitter, submitter)
DEFINE_STRING_CB(submission, subn_famf_start, family_file)
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);
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()
{
if (gom_submission) {
submission_cleanup();
- free(gom_submission);
- gom_submission = NULL;
+ SAFE_FREE(gom_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;
}