//get receiver pointer
MPI_Win recv_win = connected_wins_[target_rank];
+ if(target_count*smpi_datatype_get_extent(target_datatype)>recv_win->size_)
+ return MPI_ERR_ARG;
+
void* recv_addr = static_cast<void*> ( static_cast<char*>(recv_win->base_) + target_disp * recv_win->disp_unit_);
XBT_DEBUG("Entering MPI_Put to %d", target_rank);
//get sender pointer
MPI_Win send_win = connected_wins_[target_rank];
+ if(target_count*smpi_datatype_get_extent(target_datatype)>send_win->size_)
+ return MPI_ERR_ARG;
+
void* send_addr = static_cast<void*>(static_cast<char*>(send_win->base_) + target_disp * send_win->disp_unit_);
XBT_DEBUG("Entering MPI_Get from %d", target_rank);
//get receiver pointer
MPI_Win recv_win = connected_wins_[target_rank];
+ if(target_count*smpi_datatype_get_extent(target_datatype)>recv_win->size_)
+ return MPI_ERR_ARG;
+
void* recv_addr = static_cast<void*>(static_cast<char*>(recv_win->base_) + target_disp * recv_win->disp_unit_);
XBT_DEBUG("Entering MPI_Accumulate to %d", target_rank);
//As the tag will be used for ordering of the operations, add count to it