Unlink xrefs properly when struct is deleted.
[gedcom-parse.git] / gom / user_rec.c
index 90ffb0b995549443ce630451fcf7679290dd4f60..a685f3def47c8f4bdaa7d2da41d918429e16dac8 100644 (file)
@@ -247,6 +247,15 @@ void user_rec_subscribe()
   gedcom_subscribe_to_element(ELT_USER, user_elt_start, def_elt_end);
 }
 
+void UNREFALLFUNC(user_data)(struct user_data *obj)
+{
+  if (obj) {
+    struct user_data* runner;
+    for (runner = obj; runner; runner = runner->next)
+      unref_xref_value(runner->xref_value);
+  }
+}
+
 void CLEANFUNC(user_data)(struct user_data* data)
 {
   if (data) {
@@ -255,6 +264,14 @@ void CLEANFUNC(user_data)(struct user_data* data)
   }
 }
 
+void UNREFALLFUNC(user_rec)(struct user_rec *obj)
+{
+  if (obj) {
+    unref_xref_value(obj->xref_value);
+    UNREFALLFUNC(user_data)(obj->extra);
+  }
+}
+
 void CLEANFUNC(user_rec)(struct user_rec* rec)
 {
   if (rec) {