@@ -75,24 +75,26 @@ int MPI_Type_create_darray(int size,
7575 } else if ( (MPI_ORDER_C != order ) && (MPI_ORDER_FORTRAN != order ) ) {
7676 return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
7777 }
78- for ( i = 0 ; i < ndims ; i ++ ) {
79- if ( (MPI_DISTRIBUTE_BLOCK != distrib_array [i ]) &&
80- (MPI_DISTRIBUTE_CYCLIC != distrib_array [i ]) &&
81- (MPI_DISTRIBUTE_NONE != distrib_array [i ]) ) {
78+ if ( ndims > 0 ) {
79+ for ( i = 0 ; i < ndims ; i ++ ) {
80+ if ( (MPI_DISTRIBUTE_BLOCK != distrib_array [i ]) &&
81+ (MPI_DISTRIBUTE_CYCLIC != distrib_array [i ]) &&
82+ (MPI_DISTRIBUTE_NONE != distrib_array [i ]) ) {
83+ return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
84+ } else if ( (gsize_array [i ] < 1 ) || (psize_array [i ] < 0 ) ||
85+ ((darg_array [i ] < 0 ) && (MPI_DISTRIBUTE_DFLT_DARG != darg_array [i ]) ) ) {
86+ return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
87+ } else if ( (MPI_DISTRIBUTE_DFLT_DARG != darg_array [i ]) &&
88+ (MPI_DISTRIBUTE_BLOCK == distrib_array [i ]) &&
89+ ((darg_array [i ] * psize_array [i ]) < gsize_array [i ]) ) {
90+ return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
91+ } else if ( 1 > psize_array [i ] )
92+ return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
93+ prod_psize *= psize_array [i ];
94+ }
95+ if ( prod_psize != size )
8296 return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
83- } else if ( (gsize_array [i ] < 1 ) || (psize_array [i ] < 0 ) ||
84- ((darg_array [i ] < 0 ) && (MPI_DISTRIBUTE_DFLT_DARG != darg_array [i ]) ) ) {
85- return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
86- } else if ( (MPI_DISTRIBUTE_DFLT_DARG != darg_array [i ]) &&
87- (MPI_DISTRIBUTE_BLOCK == distrib_array [i ]) &&
88- ((darg_array [i ] * psize_array [i ]) < gsize_array [i ]) ) {
89- return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
90- } else if ( 1 > psize_array [i ] )
91- return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
92- prod_psize *= psize_array [i ];
9397 }
94- if ( prod_psize != size )
95- return OMPI_ERRHANDLER_INVOKE (MPI_COMM_WORLD , MPI_ERR_ARG , FUNC_NAME );
9698 }
9799
98100 OPAL_CR_ENTER_LIBRARY ();
0 commit comments