mirror of
https://github.com/msgpack/msgpack-c.git
synced 2025-05-25 14:34:05 +02:00
Merge branch 'added_vector_bool_size_check' of https://github.com/redboltz/msgpack-c into redboltz-added_vector_bool_size_check
# Conflicts: # include/msgpack/adaptor/vector_bool.hpp
This commit is contained in:
commit
ed91c18af8
@ -50,7 +50,8 @@ template <>
|
|||||||
struct pack<std::vector<bool> > {
|
struct pack<std::vector<bool> > {
|
||||||
template <typename Stream>
|
template <typename Stream>
|
||||||
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<bool>& v) const {
|
msgpack::packer<Stream>& operator()(msgpack::packer<Stream>& o, const std::vector<bool>& v) const {
|
||||||
o.pack_array(v.size());
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
|
o.pack_array(size);
|
||||||
for(std::vector<bool>::const_iterator it(v.begin()), it_end(v.end());
|
for(std::vector<bool>::const_iterator it(v.begin()), it_end(v.end());
|
||||||
it != it_end; ++it) {
|
it != it_end; ++it) {
|
||||||
o.pack(static_cast<bool>(*it));
|
o.pack(static_cast<bool>(*it));
|
||||||
@ -67,10 +68,11 @@ struct object_with_zone<std::vector<bool> > {
|
|||||||
o.via.array.ptr = nullptr;
|
o.via.array.ptr = nullptr;
|
||||||
o.via.array.size = 0;
|
o.via.array.size = 0;
|
||||||
} else {
|
} else {
|
||||||
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*v.size()));
|
uint32_t size = checked_get_container_size(v.size());
|
||||||
msgpack::object* const pend = p + v.size();
|
msgpack::object* p = static_cast<msgpack::object*>(o.zone.allocate_align(sizeof(msgpack::object)*size));
|
||||||
|
msgpack::object* const pend = p + size;
|
||||||
o.via.array.ptr = p;
|
o.via.array.ptr = p;
|
||||||
o.via.array.size = v.size();
|
o.via.array.size = size;
|
||||||
std::vector<bool>::const_iterator it(v.begin());
|
std::vector<bool>::const_iterator it(v.begin());
|
||||||
do {
|
do {
|
||||||
*p = msgpack::object(static_cast<bool>(*it), o.zone);
|
*p = msgpack::object(static_cast<bool>(*it), o.zone);
|
||||||
|
Loading…
x
Reference in New Issue
Block a user