From f3d75d31699253ceaf84189fca776f96ddec5071 Mon Sep 17 00:00:00 2001 From: Avi Kivity Date: Mon, 16 Mar 2015 16:32:39 +0200 Subject: [PATCH] db: fix listlike_partial_deserializing_iterator taking reference to temporary --- types.cc | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/types.cc b/types.cc index 26bf1c0a65..6aa72326f3 100644 --- a/types.cc +++ b/types.cc @@ -1015,7 +1015,7 @@ class listlike_partial_deserializing_iterator int _protocol_version; private: struct end_tag {}; - listlike_partial_deserializing_iterator(bytes_view in, int protocol_version) + listlike_partial_deserializing_iterator(bytes_view& in, int protocol_version) : _in(&in), _protocol_version(protocol_version) { _remain = read_collection_size(*_in, _protocol_version); parse(); @@ -1040,7 +1040,7 @@ public: bool operator!=(const listlike_partial_deserializing_iterator& x) const { return _remain != x._remain; } - static listlike_partial_deserializing_iterator begin(bytes_view in, int protocol_version) { + static listlike_partial_deserializing_iterator begin(bytes_view& in, int protocol_version) { return { in, protocol_version }; } static listlike_partial_deserializing_iterator end(bytes_view in, int protocol_version) { @@ -1161,7 +1161,8 @@ set_type_impl::to_string(const bytes& b) { using llpdi = listlike_partial_deserializing_iterator; std::ostringstream out; bool first = true; - std::for_each(llpdi::begin(b, 3), llpdi::end(b, 3), [&first, &out, this] (bytes_view e) { + auto v = bytes_view(b); + std::for_each(llpdi::begin(v, 3), llpdi::end(v, 3), [&first, &out, this] (bytes_view e) { if (first) { first = false; } else { @@ -1311,7 +1312,8 @@ list_type_impl::to_string(const bytes& b) { using llpdi = listlike_partial_deserializing_iterator; std::ostringstream out; bool first = true; - std::for_each(llpdi::begin(b, 3), llpdi::end(b, 3), [&first, &out, this] (bytes_view e) { + auto v = bytes_view(b); + std::for_each(llpdi::begin(v, 3), llpdi::end(v, 3), [&first, &out, this] (bytes_view e) { if (first) { first = false; } else {