- if (origin != MPI_GROUP_NULL && origin != MPI_GROUP_EMPTY) {
- size_ = origin->size();
- rank_to_index_map_ = new int[size_];
- refcount_ = 1;
- for (int i = 0; i < size_; i++) {
- rank_to_index_map_[i] = origin->rank_to_index_map_[i];
+ if (0 <= rank && rank < size_) {
+ int index = actor->get_pid();
+ if (index != MPI_UNDEFINED) {
+ if ((unsigned)index >= index_to_rank_map_.size())
+ index_to_rank_map_.resize(index + 1, MPI_UNDEFINED);
+ index_to_rank_map_[index] = rank;