Unlink xrefs properly when struct is deleted.
[gedcom-parse.git] / gom / gom_modify.c
index b876a9e5cfa2790ff825a629ceec8b915a6c7ccf..11db4d775d5c5be0be9e49c0e995bb772b324846 100644 (file)
@@ -79,6 +79,23 @@ char* gom_set_string_for_locale(char** data, const char* locale_str)
   return result;
 }
 
+void unref_xref_value(struct xref_value *xref)
+{
+  if (xref)
+    gedcom_unlink_xref(xref->type, xref->string);
+}
+
+void UNREFALLFUNC(xref_list)(struct xref_list* obj)
+{
+  if (obj) {
+    struct xref_list* runner;
+    for (runner = obj; runner; runner = runner->next) {
+      unref_xref_value(runner->xref);
+      UNREFALLFUNC(user_data)(runner->extra);
+    }
+  }
+}
+
 void CLEANFUNC(xref_list)(struct xref_list *obj)
 {
   if (obj) {