summaryrefslogtreecommitdiff
path: root/boost/compute/iterator/buffer_iterator.hpp
diff options
context:
space:
mode:
authorDongHun Kwak <dh0128.kwak@samsung.com>2017-09-13 11:24:46 +0900
committerDongHun Kwak <dh0128.kwak@samsung.com>2017-09-13 11:25:39 +0900
commit4fadd968fa12130524c8380f33fcfe25d4de79e5 (patch)
treefd26a490cd15388d42fc6652b3c5c13012e7f93e /boost/compute/iterator/buffer_iterator.hpp
parentb5c87084afaef42b2d058f68091be31988a6a874 (diff)
downloadboost-upstream/1.65.0.tar.gz
boost-upstream/1.65.0.tar.bz2
boost-upstream/1.65.0.zip
Imported Upstream version 1.65.0upstream/1.65.0
Change-Id: Icf8400b375482cb11bcf77440a6934ba360d6ba4 Signed-off-by: DongHun Kwak <dh0128.kwak@samsung.com>
Diffstat (limited to 'boost/compute/iterator/buffer_iterator.hpp')
-rw-r--r--boost/compute/iterator/buffer_iterator.hpp17
1 files changed, 12 insertions, 5 deletions
diff --git a/boost/compute/iterator/buffer_iterator.hpp b/boost/compute/iterator/buffer_iterator.hpp
index cd68058f64..de2395a552 100644
--- a/boost/compute/iterator/buffer_iterator.hpp
+++ b/boost/compute/iterator/buffer_iterator.hpp
@@ -58,13 +58,20 @@ struct buffer_iterator_index_expr
size_t index,
const memory_object::address_space address_space,
const IndexExpr &expr)
- : m_buffer(buffer),
+ : m_buffer(buffer.get(), false),
m_index(index),
m_address_space(address_space),
m_expr(expr)
{
}
+ ~buffer_iterator_index_expr()
+ {
+ // set buffer to null so that its reference count will
+ // not be decremented when its destructor is called
+ m_buffer.get() = 0;
+ }
+
operator T() const
{
BOOST_STATIC_ASSERT_MSG(boost::is_integral<IndexExpr>::value,
@@ -73,10 +80,10 @@ struct buffer_iterator_index_expr
return buffer_value<T>(m_buffer, size_t(m_expr) * sizeof(T));
}
- const buffer &m_buffer;
- size_t m_index;
- memory_object::address_space m_address_space;
- IndexExpr m_expr;
+ const buffer m_buffer;
+ const size_t m_index;
+ const memory_object::address_space m_address_space;
+ const IndexExpr m_expr;
};
template<class T, class IndexExpr>