update boost
This commit is contained in:
@@ -81,9 +81,9 @@ inline object_manager_ref_arg_from_python<Ref>::object_manager_ref_arg_from_pyth
|
||||
# if defined(__EDG_VERSION__) && __EDG_VERSION__ <= 243
|
||||
// needed for warning suppression
|
||||
python::detail::borrowed_reference x_ = python::detail::borrowed_reference(x);
|
||||
python::detail::construct_referent<Ref>(&m_result.bytes, x_);
|
||||
python::detail::construct_referent<Ref>(m_result.bytes, x_);
|
||||
# else
|
||||
python::detail::construct_referent<Ref>(&m_result.bytes, (python::detail::borrowed_reference)x);
|
||||
python::detail::construct_referent<Ref>(m_result.bytes, (python::detail::borrowed_reference)x);
|
||||
# endif
|
||||
}
|
||||
|
||||
|
||||
@@ -9,6 +9,7 @@
|
||||
# include <boost/python/detail/referent_storage.hpp>
|
||||
# include <boost/python/detail/destroy.hpp>
|
||||
# include <boost/python/detail/type_traits.hpp>
|
||||
# include <boost/align/align.hpp>
|
||||
# include <boost/static_assert.hpp>
|
||||
# include <cstddef>
|
||||
|
||||
@@ -132,7 +133,13 @@ template <class T>
|
||||
inline rvalue_from_python_data<T>::~rvalue_from_python_data()
|
||||
{
|
||||
if (this->stage1.convertible == this->storage.bytes)
|
||||
python::detail::destroy_referent<ref_type>(this->storage.bytes);
|
||||
{
|
||||
size_t allocated = sizeof(this->storage);
|
||||
void *ptr = this->storage.bytes;
|
||||
void *aligned_storage =
|
||||
::boost::alignment::align(boost::python::detail::alignment_of<T>::value, 0, ptr, allocated);
|
||||
python::detail::destroy_referent<ref_type>(aligned_storage);
|
||||
}
|
||||
}
|
||||
|
||||
}}} // namespace boost::python::converter
|
||||
|
||||
@@ -49,13 +49,17 @@ struct shared_ptr_from_python
|
||||
new (storage) SP<T>();
|
||||
else
|
||||
{
|
||||
SP<void> hold_convertible_ref_count(
|
||||
(void*)0, shared_ptr_deleter(handle<>(borrowed(source))) );
|
||||
// use aliasing constructor
|
||||
new (storage) SP<T>(hold_convertible_ref_count,
|
||||
static_cast<T*>(data->convertible));
|
||||
void *const storage = ((converter::rvalue_from_python_storage<SP<T> >*)data)->storage.bytes;
|
||||
// Deal with the "None" case.
|
||||
if (data->convertible == source)
|
||||
new (storage) SP<T>();
|
||||
else
|
||||
{
|
||||
SP<void> hold_convertible_ref_count((void*)0, shared_ptr_deleter(handle<>(borrowed(source))) );
|
||||
// use aliasing constructor
|
||||
new (storage) SP<T>(hold_convertible_ref_count, static_cast<T*>(data->convertible));
|
||||
}
|
||||
}
|
||||
|
||||
data->convertible = storage;
|
||||
}
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user