|
47 | 47 | #define OMPI_SINGLE_FINT_2_INT(in) |
48 | 48 | #define OMPI_SINGLE_INT_2_FINT(in) |
49 | 49 | #define OMPI_ARRAY_INT_2_FINT(in, n) |
| 50 | + #define OMPI_COND_STATEMENT(a) |
50 | 51 |
|
51 | 52 | #elif OMPI_SIZEOF_FORTRAN_INTEGER > SIZEOF_INT |
52 | | - #define OMPI_ARRAY_NAME_DECL(a) int *c_##a |
| 53 | + #define OMPI_ARRAY_NAME_DECL(a) int *c_##a = NULL |
53 | 54 | #define OMPI_2_DIM_ARRAY_NAME_DECL(a, dim2) int (*c_##a)[dim2], dim2_index |
54 | 55 | #define OMPI_SINGLE_NAME_DECL(a) int c_##a |
55 | 56 | #define OMPI_ARRAY_NAME_CONVERT(a) c_##a |
|
86 | 87 |
|
87 | 88 | /* This is for IN parameters. Does only free */ |
88 | 89 | #define OMPI_ARRAY_FINT_2_INT_CLEANUP(in) \ |
89 | | - free(OMPI_ARRAY_NAME_CONVERT(in)) |
| 90 | + if (NULL != OMPI_ARRAY_NAME_CONVERT(in)) \ |
| 91 | + free(OMPI_ARRAY_NAME_CONVERT(in)) |
90 | 92 |
|
91 | 93 | /* This is for single IN parameter */ |
92 | 94 | #define OMPI_SINGLE_FINT_2_INT(in) \ |
|
105 | 107 | } \ |
106 | 108 | free(OMPI_ARRAY_NAME_CONVERT(in)); \ |
107 | 109 | } while (0) |
| 110 | + |
| 111 | + #define OMPI_COND_STATEMENT(a) a |
108 | 112 | #else /* int > MPI_Fint */ |
109 | | - #define OMPI_ARRAY_NAME_DECL(a) int *c_##a |
| 113 | + #define OMPI_ARRAY_NAME_DECL(a) int *c_##a = NULL |
110 | 114 | #define OMPI_2_DIM_ARRAY_NAME_DECL(a, dim2) int (*c_##a)[dim2], dim2_index |
111 | 115 | #define OMPI_SINGLE_NAME_DECL(a) int c_##a |
112 | 116 | #define OMPI_ARRAY_NAME_CONVERT(a) c_##a |
|
140 | 144 | } while (0) |
141 | 145 |
|
142 | 146 | #define OMPI_ARRAY_FINT_2_INT_CLEANUP(in) \ |
143 | | - free(OMPI_ARRAY_NAME_CONVERT(in)) |
| 147 | + if (NULL != OMPI_ARRAY_NAME_CONVERT(in)) \ |
| 148 | + free(OMPI_ARRAY_NAME_CONVERT(in)) |
144 | 149 |
|
145 | 150 | #define OMPI_SINGLE_FINT_2_INT(in) \ |
146 | 151 | OMPI_ARRAY_NAME_CONVERT(in) = *(in) |
|
157 | 162 | free(OMPI_ARRAY_NAME_CONVERT(in)); \ |
158 | 163 | } while (0) |
159 | 164 |
|
| 165 | + #define OMPI_COND_STATEMENT(a) a |
160 | 166 | #endif |
161 | 167 |
|
162 | 168 | /* |
|
0 commit comments