aboutsummaryrefslogtreecommitdiff
path: root/Carpet/CarpetLib/src/data.cc
diff options
context:
space:
mode:
authorErik Schnetter <schnetter@cct.lsu.edu>2008-02-19 04:45:00 +0000
committerErik Schnetter <schnetter@cct.lsu.edu>2008-02-19 04:45:00 +0000
commitcd27b318e1f55ae7fc2db3ec8b9554f803879d4e (patch)
treee41f04c933a555b8d7c46b5992951de9ed382377 /Carpet/CarpetLib/src/data.cc
parent415624ed605cde362bab5e6859d62c5504450786 (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.cc5
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;