A
lgorithmique
N
umérique
D
istribuée
Public GIT Repository
projects
/
simgrid.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
keep track of which datatype was duplicated, to be able to match with it later
[simgrid.git]
/
src
/
smpi
/
mpi
/
smpi_datatype.cpp
diff --git
a/src/smpi/mpi/smpi_datatype.cpp
b/src/smpi/mpi/smpi_datatype.cpp
index
561499f
..
22a28a3
100644
(file)
--- a/
src/smpi/mpi/smpi_datatype.cpp
+++ b/
src/smpi/mpi/smpi_datatype.cpp
@@
-136,9
+136,10
@@
Datatype::Datatype(const char* name, int ident, int size, MPI_Aint lb, MPI_Aint
}
Datatype::Datatype(Datatype* datatype, int* ret)
}
Datatype::Datatype(Datatype* datatype, int* ret)
- : size_(datatype->size_), lb_(datatype->lb_), ub_(datatype->ub_), flags_(datatype->flags_)
+ : size_(datatype->size_), lb_(datatype->lb_), ub_(datatype->ub_), flags_(datatype->flags_)
, duplicated_datatype_(datatype)
{
this->add_f();
{
this->add_f();
+ datatype->ref();
*ret = this->copy_attrs(datatype);
}
*ret = this->copy_attrs(datatype);
}
@@
-150,6
+151,8
@@
Datatype::~Datatype()
return;
//prevent further usage
flags_ &= ~ DT_FLAG_COMMITED;
return;
//prevent further usage
flags_ &= ~ DT_FLAG_COMMITED;
+ if(duplicated_datatype_ != MPI_DATATYPE_NULL)
+ unref(duplicated_datatype_);
F2C::free_f(this->f2c_id());
//if still used, mark for deletion
if(refcount_!=0){
F2C::free_f(this->f2c_id());
//if still used, mark for deletion
if(refcount_!=0){