diff options
author | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-02-19 04:45:00 +0000 |
---|---|---|
committer | Erik Schnetter <schnetter@cct.lsu.edu> | 2008-02-19 04:45:00 +0000 |
commit | cd27b318e1f55ae7fc2db3ec8b9554f803879d4e (patch) | |
tree | e41f04c933a555b8d7c46b5992951de9ed382377 /Carpet/CarpetLib/src/data.cc | |
parent | 415624ed605cde362bab5e6859d62c5504450786 (diff) |
CarpetLib: Make mem<T> safer
When passing in a pointer to mem<T>, also pass the size of the
pointed-to memory region, so that mem<T> can check that there is
enough space.
Keep track of the number of allocated bytes in mempools.
darcs-hash:20080219044528-dae7b-107edc6f696a35aad32ef6e58129b3281d00eb56.gz
Diffstat (limited to 'Carpet/CarpetLib/src/data.cc')
-rw-r--r-- | Carpet/CarpetLib/src/data.cc | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/Carpet/CarpetLib/src/data.cc b/Carpet/CarpetLib/src/data.cc index 2c334da5a..8be299a21 100644 --- a/Carpet/CarpetLib/src/data.cc +++ b/Carpet/CarpetLib/src/data.cc @@ -262,7 +262,8 @@ data<T>* data<T>::make_typed (const int varindex_, template<typename T> void data<T>::allocate (const ibbox& extent_, const int proc_, - void* const memptr) + void* const memptr, + size_t const memsize) { assert (not _has_storage); _has_storage = true; @@ -284,7 +285,7 @@ void data<T>::allocate (const ibbox& extent_, if (dist::rank() == _proc) { if (vectorindex == 0) { assert (not vectorleader); - _memory = new mem<T> (vectorlength, _size, (T*)memptr); + _memory = new mem<T> (vectorlength, _size, (T*)memptr, memsize); } else { assert (vectorleader); _memory = vectorleader->_memory; |