@@ -1123,7 +1123,7 @@ PREFIX (send) (caf_token_t token, size_t offset, int image_index,
1123
1123
/* FIXME: Implement vector subscripts, type conversion and check whether
1124
1124
string-kind conversions are permitted.
1125
1125
FIXME: Implement sendget as well. */
1126
- int ierr = 0 ;
1126
+ int ierr = 0 , flag = 0 ;
1127
1127
size_t i , size ;
1128
1128
int j ;
1129
1129
/* int position, msg = 0; */
@@ -1214,8 +1214,21 @@ PREFIX (send) (caf_token_t token, size_t offset, int image_index,
1214
1214
#endif // CAF_MPI_LOCK_UNLOCK
1215
1215
}
1216
1216
1217
- if (ierr != 0 )
1218
- error_stop (ierr );
1217
+ MPI_Test (& lock_req ,& flag ,MPI_STATUS_IGNORE );
1218
+
1219
+ if (error_called == 1 )
1220
+ {
1221
+ communicator_shrink (& CAF_COMM_WORLD );
1222
+ error_called = 0 ;
1223
+ ierr = STAT_FAILED_IMAGE ;
1224
+ }
1225
+
1226
+ if (!stat && ierr == STAT_FAILED_IMAGE )
1227
+ error_stop (ierr );
1228
+
1229
+ if (stat )
1230
+ * stat = ierr ;
1231
+
1219
1232
return ;
1220
1233
}
1221
1234
else
@@ -1582,6 +1595,9 @@ PREFIX (get) (caf_token_t token, size_t offset,
1582
1595
1583
1596
if (!stat && ierr == STAT_FAILED_IMAGE )
1584
1597
error_stop (ierr );
1598
+
1599
+ if (stat )
1600
+ * stat = ierr ;
1585
1601
}
1586
1602
return ;
1587
1603
}
@@ -1678,14 +1694,10 @@ PREFIX (get) (caf_token_t token, size_t offset,
1678
1694
communicator_shrink (& CAF_COMM_WORLD );
1679
1695
error_called = 0 ;
1680
1696
ierr = STAT_FAILED_IMAGE ;
1681
- printf ("In error_called\n" );
1682
1697
}
1683
1698
1684
1699
if (!stat && ierr == STAT_FAILED_IMAGE )
1685
- {
1686
- printf ("error\n" );
1687
- error_stop (ierr );
1688
- }
1700
+ error_stop (ierr );
1689
1701
1690
1702
# ifdef CAF_MPI_LOCK_UNLOCK
1691
1703
MPI_Win_lock (MPI_LOCK_SHARED , image_index - 1 , 0 , * p );
0 commit comments