فهرست منبع

objdb: delete trackers when an object is deleted

git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@3047 fd59a12c-fef9-0310-b244-a6a79926bd2f
Angus Salkeld 15 سال پیش
والد
کامیت
739f9ab1b7
1فایلهای تغییر یافته به همراه14 افزوده شده و 0 حذف شده
  1. 14 0
      exec/objdb.c

+ 14 - 0
exec/objdb.c

@@ -672,6 +672,7 @@ static int _clear_object(struct object_instance *instance)
 	int res;
 	struct object_instance *find_instance = NULL;
 	struct object_key *object_key = NULL;
+	struct object_tracker *tracker_pt = NULL;
 
 	for (list = instance->key_head.next;
 	     list != &instance->key_head; ) {
@@ -687,6 +688,19 @@ static int _clear_object(struct object_instance *instance)
 		free(object_key);
 	}
 
+	for (list = instance->track_head.next;
+		list != &instance->track_head;) {
+
+		tracker_pt = list_entry (list,
+			struct object_tracker, object_list);
+
+		list = list->next;
+
+		list_del(&tracker_pt->tracker_list);
+		list_del(&tracker_pt->object_list);
+		free(tracker_pt);
+	}
+
 	for (list = instance->child_head.next;
 	     list != &instance->child_head; ) {