瀏覽代碼

Use the tmp variable in the right iterator loop !
With debug enabled, that's a guaranteed crash in cpg when a node leaves.



git-svn-id: http://svn.fedorahosted.org/svn/corosync/trunk@970 fd59a12c-fef9-0310-b244-a6a79926bd2f

Patrick Caulfield 20 年之前
父節點
當前提交
f870208608
共有 1 個文件被更改,包括 2 次插入2 次删除
  1. 2 2
      exec/cpg.c

+ 2 - 2
exec/cpg.c

@@ -477,9 +477,9 @@ static void remove_node_from_groups(struct totem_ip_address *node, struct list_h
 	struct group_info *gi;
 	struct group_info *gi;
 
 
 	for (i=0; i < GROUP_HASH_SIZE; i++) {
 	for (i=0; i < GROUP_HASH_SIZE; i++) {
-		for (iter = group_lists[i].next, tmp=iter->next; iter != &group_lists[i]; iter = tmp, tmp=iter->next) {
+		for (iter = group_lists[i].next; iter != &group_lists[i]; iter = iter->next) {
 			gi = list_entry(iter, struct group_info, list);
 			gi = list_entry(iter, struct group_info, list);
-			for (iter2 = gi->members.next; iter2 != &gi->members; iter2 = iter2->next) {
+			for (iter2 = gi->members.next, tmp = iter2->next; iter2 != &gi->members; iter2 = tmp, tmp = iter2->next) {
 				pi = list_entry(iter2, struct process_info, list);
 				pi = list_entry(iter2, struct process_info, list);
 
 
 				if (totemip_equal(&pi->node, node)) {
 				if (totemip_equal(&pi->node, node)) {