Fix compilation with GCC 8
This commit is contained in:
parent
4b368e1cfc
commit
81fd09775c
|
@ -354,6 +354,9 @@ namespace libtorrent {
|
||||||
swap(m_len, e.m_len);
|
swap(m_len, e.m_len);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lazy_entry(lazy_entry&&);
|
||||||
|
lazy_entry& operator=(lazy_entry&&);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
|
||||||
int capacity() const;
|
int capacity() const;
|
||||||
|
@ -382,13 +385,13 @@ namespace libtorrent {
|
||||||
std::uint32_t m_type:3;
|
std::uint32_t m_type:3;
|
||||||
|
|
||||||
// non-copyable
|
// non-copyable
|
||||||
lazy_entry(lazy_entry const&);
|
lazy_entry(lazy_entry const&) = delete;
|
||||||
lazy_entry const& operator=(lazy_entry const&);
|
lazy_entry const& operator=(lazy_entry const&) = delete;
|
||||||
};
|
};
|
||||||
|
|
||||||
struct TORRENT_DEPRECATED lazy_dict_entry
|
struct TORRENT_DEPRECATED lazy_dict_entry
|
||||||
{
|
{
|
||||||
char const* name;
|
char const* name = nullptr;
|
||||||
lazy_entry val;
|
lazy_entry val;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
|
@ -88,7 +88,7 @@ namespace libtorrent {
|
||||||
|
|
||||||
data_type* data()
|
data_type* data()
|
||||||
{
|
{
|
||||||
return &m_sockaddr;
|
return reinterpret_cast<data_type*>(&m_sockaddr);
|
||||||
}
|
}
|
||||||
|
|
||||||
const data_type* data() const
|
const data_type* data() const
|
||||||
|
|
|
@ -36,6 +36,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
#include "libtorrent/lazy_entry.hpp"
|
#include "libtorrent/lazy_entry.hpp"
|
||||||
#include "libtorrent/bdecode.hpp" // for error codes
|
#include "libtorrent/bdecode.hpp" // for error codes
|
||||||
#include "libtorrent/string_util.hpp" // for is_digit
|
#include "libtorrent/string_util.hpp" // for is_digit
|
||||||
|
#include <algorithm>
|
||||||
#include <cstring> // for memset
|
#include <cstring> // for memset
|
||||||
#include <limits> // for numeric_limits
|
#include <limits> // for numeric_limits
|
||||||
#include <cstdio> // for snprintf
|
#include <cstdio> // for snprintf
|
||||||
|
@ -266,8 +267,7 @@ namespace {
|
||||||
int const capacity = this->capacity() * lazy_entry_grow_factor / 100;
|
int const capacity = this->capacity() * lazy_entry_grow_factor / 100;
|
||||||
auto* tmp = new (std::nothrow) lazy_dict_entry[capacity + 1];
|
auto* tmp = new (std::nothrow) lazy_dict_entry[capacity + 1];
|
||||||
if (tmp == nullptr) return nullptr;
|
if (tmp == nullptr) return nullptr;
|
||||||
std::memcpy(tmp, m_data.dict, sizeof(lazy_dict_entry) * (m_size + 1));
|
std::move(m_data.dict, m_data.dict + m_size + 1, tmp);
|
||||||
for (int i = 0; i < int(m_size); ++i) m_data.dict[i + 1].val.release();
|
|
||||||
|
|
||||||
delete[] m_data.dict;
|
delete[] m_data.dict;
|
||||||
m_data.dict = tmp;
|
m_data.dict = tmp;
|
||||||
|
@ -437,8 +437,7 @@ namespace {
|
||||||
int const capacity = this->capacity() * lazy_entry_grow_factor / 100;
|
int const capacity = this->capacity() * lazy_entry_grow_factor / 100;
|
||||||
lazy_entry* tmp = new (std::nothrow) lazy_entry[capacity + 1];
|
lazy_entry* tmp = new (std::nothrow) lazy_entry[capacity + 1];
|
||||||
if (tmp == nullptr) return nullptr;
|
if (tmp == nullptr) return nullptr;
|
||||||
std::memcpy(tmp, m_data.list, sizeof(lazy_entry) * (m_size + 1));
|
std::move(m_data.list, m_data.list + m_size + 1, tmp);
|
||||||
for (int i = 0; i < int(m_size); ++i) m_data.list[i + 1].release();
|
|
||||||
|
|
||||||
delete[] m_data.list;
|
delete[] m_data.list;
|
||||||
m_data.list = tmp;
|
m_data.list = tmp;
|
||||||
|
@ -492,6 +491,18 @@ namespace {
|
||||||
return {m_begin, m_len};
|
return {m_begin, m_len};
|
||||||
}
|
}
|
||||||
|
|
||||||
|
lazy_entry::lazy_entry(lazy_entry&& other)
|
||||||
|
: lazy_entry()
|
||||||
|
{
|
||||||
|
this->swap(other);
|
||||||
|
}
|
||||||
|
|
||||||
|
lazy_entry& lazy_entry::operator=(lazy_entry&& other)
|
||||||
|
{
|
||||||
|
this->swap(other);
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
namespace {
|
namespace {
|
||||||
|
|
||||||
int line_longer_than(lazy_entry const& e, int limit)
|
int line_longer_than(lazy_entry const& e, int limit)
|
||||||
|
|
|
@ -1094,7 +1094,6 @@ namespace {
|
||||||
int const num_nodes = merkle_num_nodes(num_leafs);
|
int const num_nodes = merkle_num_nodes(num_leafs);
|
||||||
m_merkle_first_leaf = num_nodes - num_leafs;
|
m_merkle_first_leaf = num_nodes - num_leafs;
|
||||||
m_merkle_tree.resize(num_nodes);
|
m_merkle_tree.resize(num_nodes);
|
||||||
std::memset(m_merkle_tree.data(), 0, aux::numeric_cast<std::size_t>(num_nodes * 20));
|
|
||||||
m_merkle_tree[0].assign(root_hash.string_ptr());
|
m_merkle_tree[0].assign(root_hash.string_ptr());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,7 @@ POSSIBILITY OF SUCH DAMAGE.
|
||||||
|
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <cstring>
|
#include <cstring>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
#ifndef TORRENT_NO_DEPRECATE
|
#ifndef TORRENT_NO_DEPRECATE
|
||||||
#include "libtorrent/lazy_entry.hpp"
|
#include "libtorrent/lazy_entry.hpp"
|
||||||
|
@ -629,12 +630,17 @@ TORRENT_TEST(lazy_entry)
|
||||||
|
|
||||||
for (int i = 0; i < int(sizeof(b)/sizeof(b[0])); ++i)
|
for (int i = 0; i < int(sizeof(b)/sizeof(b[0])); ++i)
|
||||||
{
|
{
|
||||||
lazy_entry e;
|
lazy_entry tmp;
|
||||||
error_code ec;
|
error_code ec;
|
||||||
int ret = lazy_bdecode(b[i], b[i] + strlen(b[i]), e, ec, nullptr);
|
int ret = lazy_bdecode(b[i], b[i] + strlen(b[i]), tmp, ec, nullptr);
|
||||||
|
lazy_entry e;
|
||||||
|
e = std::move(tmp);
|
||||||
TEST_EQUAL(ret, -1);
|
TEST_EQUAL(ret, -1);
|
||||||
TEST_CHECK(ec == error_code(bdecode_errors::unexpected_eof));
|
TEST_CHECK(ec == error_code(bdecode_errors::unexpected_eof));
|
||||||
std::printf("%s\n", print_entry(e).c_str());
|
std::printf("%s\n", print_entry(e).c_str());
|
||||||
|
|
||||||
|
lazy_entry* moved = new lazy_entry(std::move(e));
|
||||||
|
delete moved;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue