1
1
In _correct_ programs only when (group->grp_proc_count - n) > 0,
   we may fill ranks_included (callers of ompi_group_excl make sure)...
   Therefore move the ranks_included loop into the true
   block of the if (which is changed from "!= 0" to ">0").

   Otherwise, the initilization of k=0 and ranks_included=NULL is good
   for the ompi_group_incl (and submethods ompi_group_*).

   Tested on Linux w/ mpi_test_suite and MPIch testsuite:
     4 grouptest_coll
     4 groupcreate
     4 grouptest

This commit was SVN r21172.
Этот коммит содержится в:
Rainer Keller 2009-05-05 22:30:08 +00:00
родитель b8bb7865bc
Коммит 4ff860db1f

Просмотреть файл

@ -239,31 +239,31 @@ int ompi_group_incl(ompi_group_t* group, int n, int *ranks, ompi_group_t **new_g
int ompi_group_excl(ompi_group_t* group, int n, int *ranks, ompi_group_t **new_group)
{
int i, j, k, result;
int *ranks_included=NULL;
/* determine the list of included processes for the excl-method */
/* determine the list of included processes for the excl-method */
k = 0;
if (0 != (group->grp_proc_count - n)) {
if (0 < (group->grp_proc_count - n)) {
ranks_included = (int *)malloc( (group->grp_proc_count-n)*(sizeof(int)));
}
for (i=0 ; i<group->grp_proc_count ; i++) {
for(j=0 ; j<n ; j++) {
if(ranks[j] == i) break;
}
if (j==n) {
ranks_included[k] = i;
k++;
}
for (i=0 ; i<group->grp_proc_count ; i++) {
for(j=0 ; j<n ; j++) {
if(ranks[j] == i) break;
}
if (j==n) {
ranks_included[k] = i;
k++;
}
}
}
result = ompi_group_incl(group, k, ranks_included, new_group);
if (NULL != ranks_included)
{
if (NULL != ranks_included) {
free(ranks_included);
}
return result;
}