dear developers,

there is an error in the above mentioned file, in line 74:

   if (MPI_SUCCESS == OMPI_FINT_2_INT(*ierr)) {
       OMPI_ARRAY_INT_2_FINT(coords, OMPI_FINT_2_INT(*maxdims));

the OMPI_ARRAY_INT_2_FINT macro uses the second argument with
pre-decrement, such that it must be an lvalue and should not
contain a type-cast.

In the built at hand this code expands to

   if (0 == (int) (*ierr)) {
while((int) (*maxdims) > 0) { coords[(int) (*maxdims) - 1] = c_coords[(int) (*maxdims) - 1]; --(int) (*maxdims); } free(c_coords);
   }

if MPI_FINT is, e.g. "long long" (that is, if FORTRAN integers are
64 bit, but C int/long is 32 bit), and

--(int) (*maxdims)

is not correct syntactically. I guess one could omit the
OMPI_FINT_2_INT in the second line, but you should check this.

Anyway, bad testing. The code has probably never been build for
FORTRAN with 64-bit integers.

Never mind,
+---------------------------------+----------------------------------+
| Prof. Christoph van Wüllen      | Tele-Phone (+49) (0)631 205 2749 |
| TU Kaiserslautern, FB Chemie    | Tele-Fax   (+49) (0)631 205 2750 |
| Erwin-Schrödinger-Str.          |                                  |
| D-67663 Kaiserslautern, Germany | vanwul...@chemie.uni-kl.de       |
|                                                                    |
| HomePage:  http://www.chemie.uni-kl.de/wcms/ag-vanwullen.html      |
+---------------------------------+----------------------------------+

Reply via email to