Sign Up
Log In
Log In
or
Sign Up
Places
All Projects
Status Monitor
Collapse sidebar
home:marec2000:cryptocoins:dependencies:ports
boost_1_64_0
mpi_upstream.patch
Overview
Repositories
Revisions
Requests
Users
Attributes
Meta
File mpi_upstream.patch of Package boost_1_64_0
commit f5bdcc1ebfe954bb64835f2a0efd94471da42207 Author: Jonathan Wakely <github@kayari.org> Date: Thu Feb 23 02:18:58 2017 +0000 Replace boost::serialization::detail::get_data function. (#39) commit 947d17157304ceb93926ab961487e9c86fc7c2d2 Author: Jonathan Wakely <github@kayari.org> Date: Thu Feb 23 02:19:45 2017 +0000 Add header for serialization::make_array (#40) commit b21d95676028e45a6743be9898306f13fe715282 Author: Andrey Semashev <Lastique@users.noreply.github.com> Date: Thu Feb 23 05:17:32 2017 +0300 Fix incorrect usage of auto_ptr to free an array (#38) The `auto_ptr` would use `delete p` to free an array allocated with `operator new[]`, which could result in heap corruption. Replaced it with `scoped_array`. commit 98c406a77f8506550276a8e81ad6ed0c961fca8f Author: Alain Miniussi <alain.miniussi@oca.eu> Date: Thu Feb 23 11:26:49 2017 +0100 documentation typo Index: boost_1_64_0/boost/mpi/python/serialize.hpp =================================================================== --- boost_1_64_0.orig/boost/mpi/python/serialize.hpp +++ boost_1_64_0/boost/mpi/python/serialize.hpp @@ -26,7 +26,6 @@ #include <boost/python/str.hpp> #include <boost/python/extract.hpp> -#include <memory> #include <map> #include <boost/function/function3.hpp> @@ -36,6 +35,9 @@ #include <boost/serialization/split_free.hpp> #include <boost/serialization/array.hpp> +#include <boost/serialization/array_wrapper.hpp> + +#include <boost/smart_ptr/scoped_array.hpp> #include <boost/assert.hpp> @@ -441,7 +443,7 @@ load_impl(Archiver& ar, boost::python::o int len; ar >> len; - std::auto_ptr<char> string(new char[len]); + boost::scoped_array<char> string(new char[len]); ar >> boost::serialization::make_array(string.get(), len); boost::python::str py_string(string.get(), len); obj = boost::python::pickle::loads(py_string); Index: boost_1_64_0/boost/mpi/detail/mpi_datatype_primitive.hpp =================================================================== --- boost_1_64_0.orig/boost/mpi/detail/mpi_datatype_primitive.hpp +++ boost_1_64_0/boost/mpi/detail/mpi_datatype_primitive.hpp @@ -25,7 +25,6 @@ namespace std{ #include <boost/assert.hpp> #include <boost/mpl/placeholders.hpp> #include <boost/serialization/array.hpp> -#include <boost/serialization/detail/get_data.hpp> #include <stdexcept> #include <iostream> #include <vector> @@ -80,18 +79,18 @@ public: BOOST_MPI_CHECK_RESULT(MPI_Type_create_struct, ( addresses.size(), - boost::serialization::detail::get_data(lengths), - boost::serialization::detail::get_data(addresses), - boost::serialization::detail::get_data(types), + get_data(lengths), + get_data(addresses), + get_data(types), &datatype_ )); #else BOOST_MPI_CHECK_RESULT(MPI_Type_struct, ( addresses.size(), - boost::serialization::detail::get_data(lengths), - boost::serialization::detail::get_data(addresses), - boost::serialization::detail::get_data(types), + get_data(lengths), + get_data(addresses), + get_data(types), &datatype_ )); #endif @@ -129,6 +128,12 @@ private: lengths.push_back(l); } + template <class T> + static T* get_data(std::vector<T>& v) + { + return v.empty() ? 0 : &(v[0]); + } + std::vector<MPI_Aint> addresses; std::vector<MPI_Datatype> types; std::vector<int> lengths; Index: boost_1_64_0/boost/mpi/detail/packed_iprimitive.hpp =================================================================== --- boost_1_64_0.orig/boost/mpi/detail/packed_iprimitive.hpp +++ boost_1_64_0/boost/mpi/detail/packed_iprimitive.hpp @@ -16,7 +16,6 @@ #include <boost/mpi/exception.hpp> #include <boost/assert.hpp> #include <boost/serialization/array.hpp> -#include <boost/serialization/detail/get_data.hpp> #include <vector> #include <boost/mpi/allocator.hpp> @@ -104,7 +103,12 @@ private: void load_impl(void * p, MPI_Datatype t, int l) { BOOST_MPI_CHECK_RESULT(MPI_Unpack, - (const_cast<char*>(boost::serialization::detail::get_data(buffer_)), buffer_.size(), &position, p, l, t, comm)); + (get_data(buffer_), buffer_.size(), &position, p, l, t, comm)); + } + + static buffer_type::value_type* get_data(buffer_type& b) + { + return b.empty() ? 0 : &(b[0]); } buffer_type & buffer_; Index: boost_1_64_0/boost/mpi/detail/packed_oprimitive.hpp =================================================================== --- boost_1_64_0.orig/boost/mpi/detail/packed_oprimitive.hpp +++ boost_1_64_0/boost/mpi/detail/packed_oprimitive.hpp @@ -15,7 +15,6 @@ #include <boost/mpi/datatype.hpp> #include <boost/mpi/exception.hpp> -#include <boost/serialization/detail/get_data.hpp> #include <boost/serialization/array.hpp> #include <boost/assert.hpp> #include <vector> @@ -98,13 +97,18 @@ private: // pack the data into the buffer BOOST_MPI_CHECK_RESULT(MPI_Pack, - (const_cast<void*>(p), l, t, boost::serialization::detail::get_data(buffer_), buffer_.size(), &position, comm)); + (const_cast<void*>(p), l, t, get_data(buffer_), buffer_.size(), &position, comm)); // reduce the buffer size if needed BOOST_ASSERT(std::size_t(position) <= buffer_.size()); if (std::size_t(position) < buffer_.size()) buffer_.resize(position); } + static buffer_type::value_type* get_data(buffer_type& b) + { + return b.empty() ? 0 : &(b[0]); + } + buffer_type& buffer_; mutable std::size_t size_; MPI_Comm comm; Index: boost_1_64_0/boost/mpi/communicator.hpp =================================================================== --- boost_1_64_0.orig/boost/mpi/communicator.hpp +++ boost_1_64_0/boost/mpi/communicator.hpp @@ -850,7 +850,7 @@ class BOOST_MPI_DECL communicator optional<graph_communicator> as_graph_communicator() const; /** - * Determines whether this communicator has a Cartesian topology. + * Determines whether this communicator has a Graph topology. */ bool has_cartesian_topology() const;
Locations
Projects
Search
Status Monitor
Help
OpenBuildService.org
Documentation
API Documentation
Code of Conduct
Contact
Support
@OBShq
Terms
openSUSE Build Service is sponsored by
The Open Build Service is an
openSUSE project
.
Sign Up
Log In
Places
Places
All Projects
Status Monitor