CRM_ASSERT(tmp != NULL);
CRM_DEV_ASSERT(tmp != NULL);
do_update_cib_nodes(crm_data_t *updates, gboolean overwrite){	struct update_data_s update_data;	crm_data_t *fragment = updates;	crm_data_t *tmp = NULL;		if(updates == NULL) {		fragment = create_cib_fragment(NULL, NULL);	}	tmp = find_xml_node(fragment, XML_TAG_CIB, TRUE);	tmp = get_object_root(XML_CIB_TAG_STATUS, tmp);	CRM_ASSERT(tmp != NULL);		update_data.updates = tmp;	update_data.state = XML_BOOLEAN_NO;	update_data.join  = CRMD_JOINSTATE_DOWN;	if(fsa_membership_copy->dead_members != NULL) {		g_hash_table_foreach(fsa_membership_copy->dead_members,				     ghash_update_cib_node, &update_data);	}		update_data.state = XML_BOOLEAN_YES;	update_data.join  = NULL;	if(overwrite) {		update_data.join = CRMD_JOINSTATE_PENDING;	}		if(fsa_membership_copy->members != NULL) {		g_hash_table_foreach(fsa_membership_copy->members,				     ghash_update_cib_node, &update_data);	}	/* this is most likely overkill...	 *	 * make *sure* that the join status of nodes entering the ccm list	 *  is reset	 *	update_data.join = CRMD_JOINSTATE_PENDING;	if(fsa_membership_copy->new_members != NULL) {		g_hash_table_foreach(fsa_membership_copy->new_members,				     ghash_update_cib_node, &update_data);	}*/	if(update_data.updates != NULL) {		update_local_cib(fragment);	}	/* so it can be freed */	return update_data.updates;}