@@ -48,7 +48,17 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object,
48
48
if (state >= OMPI_MPI_STATE_INIT_COMPLETED &&
49
49
state < OMPI_MPI_STATE_FINALIZE_PAST_COMM_SELF_DESTRUCT ) {
50
50
comm = (ompi_mpi_compat_mpi3 )? & ompi_mpi_comm_world .comm : & ompi_mpi_comm_self .comm ;
51
- comm -> error_handler -> eh_comm_fn (& comm , & err_code , message , NULL );
51
+ switch (comm -> error_handler -> eh_lang ) {
52
+ case OMPI_ERRHANDLER_LANG_C :
53
+ comm -> error_handler -> eh_comm_fn (& comm , & err_code , message , NULL );
54
+ break ;
55
+
56
+ case OMPI_ERRHANDLER_LANG_FORTRAN :
57
+ fortran_handle = OMPI_INT_2_FINT (comm -> c_f_to_c_index );
58
+ comm -> error_handler -> eh_fort_fn (& fortran_handle , & fortran_err_code );
59
+ err_code = OMPI_FINT_2_INT (fortran_err_code );
60
+ break ;
61
+ }
52
62
}
53
63
else {
54
64
if (NULL == ompi_initial_error_handler ) {
@@ -74,11 +84,6 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object,
74
84
errhandler -> eh_comm_fn (& comm , & err_code , message , NULL );
75
85
break ;
76
86
77
- case OMPI_ERRHANDLER_LANG_CXX :
78
- errhandler -> eh_cxx_dispatch_fn (& comm , & err_code , message ,
79
- (ompi_errhandler_generic_handler_fn_t * )errhandler -> eh_comm_fn );
80
- break ;
81
-
82
87
case OMPI_ERRHANDLER_LANG_FORTRAN :
83
88
fortran_handle = OMPI_INT_2_FINT (comm -> c_f_to_c_index );
84
89
errhandler -> eh_fort_fn (& fortran_handle , & fortran_err_code );
@@ -94,11 +99,6 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object,
94
99
errhandler -> eh_win_fn (& win , & err_code , message , NULL );
95
100
break ;
96
101
97
- case OMPI_ERRHANDLER_LANG_CXX :
98
- errhandler -> eh_cxx_dispatch_fn (& win , & err_code , message ,
99
- (ompi_errhandler_generic_handler_fn_t * )errhandler -> eh_win_fn );
100
- break ;
101
-
102
102
case OMPI_ERRHANDLER_LANG_FORTRAN :
103
103
fortran_handle = OMPI_INT_2_FINT (win -> w_f_to_c_index );
104
104
errhandler -> eh_fort_fn (& fortran_handle , & fortran_err_code );
@@ -114,11 +114,6 @@ int ompi_errhandler_invoke(ompi_errhandler_t *errhandler, void *mpi_object,
114
114
errhandler -> eh_file_fn (& file , & err_code , message , NULL );
115
115
break ;
116
116
117
- case OMPI_ERRHANDLER_LANG_CXX :
118
- errhandler -> eh_cxx_dispatch_fn (& file , & err_code , message ,
119
- (ompi_errhandler_generic_handler_fn_t * )errhandler -> eh_file_fn );
120
- break ;
121
-
122
117
case OMPI_ERRHANDLER_LANG_FORTRAN :
123
118
fortran_handle = OMPI_INT_2_FINT (file -> f_f_to_c_index );
124
119
errhandler -> eh_fort_fn (& fortran_handle , & fortran_err_code );
0 commit comments