| 106 | | if (HANDLE_GET_KIND(errhandler) != HANDLE_KIND_BUILTIN) { |
| 107 | | MPIR_ROMIO_Get_file_errhand( file, &old_errhandler ); |
| 108 | | if (!old_errhandler) { |
| 109 | | MPID_Errhandler_get_ptr( MPI_ERRORS_RETURN, old_errhandler_ptr ); |
| 110 | | } |
| 111 | | else { |
| 112 | | MPID_Errhandler_get_ptr( old_errhandler, old_errhandler_ptr ); |
| 113 | | } |
| 114 | | |
| 115 | | if (old_errhandler_ptr) { |
| 116 | | MPIR_Errhandler_release_ref(old_errhandler_ptr,&in_use); |
| 117 | | if (!in_use) { |
| 118 | | MPID_Errhandler_free( old_errhandler_ptr ); |
| 119 | | } |
| 120 | | } |
| | 106 | MPIR_ROMIO_Get_file_errhand( file, &old_errhandler ); |
| | 107 | if (!old_errhandler) { |
| | 108 | /* MPI_File objects default to the errhandler set on MPI_FILE_NULL |
| | 109 | * at file open time, or MPI_ERRORS_RETURN if no errhandler is set |
| | 110 | * on MPI_FILE_NULL. (MPI-2.2, sec 13.7) */ |
| | 111 | MPID_Errhandler_get_ptr( MPI_ERRORS_RETURN, old_errhandler_ptr ); |
| | 112 | } |
| | 113 | else { |
| | 114 | MPID_Errhandler_get_ptr( old_errhandler, old_errhandler_ptr ); |
| | 115 | } |
| | 116 | |
| | 117 | if (old_errhandler_ptr) { |
| | 118 | MPIR_Errhandler_release_ref(old_errhandler_ptr,&in_use); |
| | 119 | if (!in_use) { |
| | 120 | MPID_Errhandler_free( old_errhandler_ptr ); |
| | 121 | } |