mirror of
https://github.com/transmission/transmission
synced 2024-12-21 23:32:35 +00:00
fix: gcc-13 warnings pt. 2 (#6404)
* fix: tr_priority_t usage warnings * build: disable -Wnull-dereference warnings when building GTest * fix: -Wunused-result warning in tr_spawn_async() * fix: -Warray-bounds warning in NetTest::compact4()
This commit is contained in:
parent
a9fa9430ba
commit
581d9c34cc
9 changed files with 49 additions and 43 deletions
|
@ -725,24 +725,25 @@ bool FileList::Impl::onViewPathToggled(Gtk::TreeViewColumn* col, Gtk::TreeModel:
|
|||
|
||||
if (cid == file_cols.priority.index())
|
||||
{
|
||||
auto priority = iter->get_value(file_cols.priority);
|
||||
auto const old_priority = iter->get_value(file_cols.priority);
|
||||
auto new_priority = TR_PRI_NORMAL;
|
||||
|
||||
switch (priority)
|
||||
switch (old_priority)
|
||||
{
|
||||
case TR_PRI_NORMAL:
|
||||
priority = TR_PRI_HIGH;
|
||||
new_priority = TR_PRI_HIGH;
|
||||
break;
|
||||
|
||||
case TR_PRI_HIGH:
|
||||
priority = TR_PRI_LOW;
|
||||
new_priority = TR_PRI_LOW;
|
||||
break;
|
||||
|
||||
default:
|
||||
priority = TR_PRI_NORMAL;
|
||||
new_priority = TR_PRI_NORMAL;
|
||||
break;
|
||||
}
|
||||
|
||||
tr_torrentSetFilePriorities(tor, indexBuf.data(), indexBuf.size(), priority);
|
||||
tr_torrentSetFilePriorities(tor, indexBuf.data(), indexBuf.size(), new_priority);
|
||||
}
|
||||
else
|
||||
{
|
||||
|
|
|
@ -118,7 +118,7 @@ void OptionsDialog::Impl::addResponseCB(int response)
|
|||
{
|
||||
if (response == TR_GTK_RESPONSE_TYPE(ACCEPT))
|
||||
{
|
||||
tr_torrentSetPriority(tor_, gtr_combo_box_get_active_enum(*priority_combo_));
|
||||
tr_torrentSetPriority(tor_, static_cast<tr_priority_t>(gtr_combo_box_get_active_enum(*priority_combo_)));
|
||||
|
||||
if (run_check_->get_active())
|
||||
{
|
||||
|
|
|
@ -242,6 +242,7 @@ struct tr_address
|
|||
} addr;
|
||||
|
||||
static auto constexpr CompactAddrBytes = std::array{ 4U, 16U };
|
||||
static auto constexpr CompactAddrMaxBytes = 16U;
|
||||
static_assert(std::size(CompactAddrBytes) == NUM_TR_AF_INET_TYPES);
|
||||
|
||||
[[nodiscard]] static auto any(tr_address_type type) noexcept
|
||||
|
|
|
@ -729,9 +729,9 @@ tr_resume::fields_t load_from_file(tr_torrent* tor, tr_torrent::ResumeHelper& he
|
|||
}
|
||||
|
||||
if ((fields_to_load & tr_resume::BandwidthPriority) != 0 && tr_variantDictFindInt(&top, TR_KEY_bandwidth_priority, &i) &&
|
||||
tr_isPriority(i))
|
||||
tr_isPriority(static_cast<tr_priority_t>(i)))
|
||||
{
|
||||
tr_torrentSetPriority(tor, i);
|
||||
tr_torrentSetPriority(tor, static_cast<tr_priority_t>(i));
|
||||
fields_loaded |= tr_resume::BandwidthPriority;
|
||||
}
|
||||
|
||||
|
|
|
@ -164,8 +164,8 @@ bool tr_spawn_async(
|
|||
|
||||
if (!tr_spawn_async_in_child(cmd, env, work_dir))
|
||||
{
|
||||
(void)write(pipe_fds[1], &errno, sizeof(errno));
|
||||
_exit(0);
|
||||
auto const ok = write(pipe_fds[1], &errno, sizeof(errno)) != -1;
|
||||
_exit(ok ? EXIT_SUCCESS : EXIT_FAILURE);
|
||||
}
|
||||
}
|
||||
|
||||
|
|
|
@ -53,8 +53,6 @@ struct tr_torrent;
|
|||
struct tr_torrent_metainfo;
|
||||
struct tr_variant;
|
||||
|
||||
using tr_priority_t = int8_t;
|
||||
|
||||
#define TR_RPC_SESSION_ID_HEADER "X-Transmission-Session-Id"
|
||||
|
||||
enum tr_verify_added_mode
|
||||
|
@ -74,6 +72,13 @@ enum tr_encryption_mode
|
|||
TR_ENCRYPTION_REQUIRED
|
||||
};
|
||||
|
||||
enum tr_priority_t : int8_t
|
||||
{
|
||||
TR_PRI_LOW = -1,
|
||||
TR_PRI_NORMAL = 0, /* since Normal is 0, memset initializes nicely */
|
||||
TR_PRI_HIGH = 1
|
||||
};
|
||||
|
||||
#define TR_RATIO_NA (-1)
|
||||
#define TR_RATIO_INF (-2)
|
||||
|
||||
|
@ -1010,13 +1015,6 @@ void tr_torrentSetPeerLimit(tr_torrent* tor, uint16_t max_connected_peers);
|
|||
|
||||
// --- File Priorities
|
||||
|
||||
enum : tr_priority_t
|
||||
{
|
||||
TR_PRI_LOW = -1,
|
||||
TR_PRI_NORMAL = 0, /* since Normal is 0, memset initializes nicely */
|
||||
TR_PRI_HIGH = 1
|
||||
};
|
||||
|
||||
/**
|
||||
* @brief Set a batch of files to a particular priority.
|
||||
*
|
||||
|
|
|
@ -47,7 +47,7 @@ static CGFloat const kImageOverlap = 1.0;
|
|||
[super setSelected:flag forSegment:segment];
|
||||
|
||||
//only for when clicking manually
|
||||
NSInteger priority;
|
||||
tr_priority_t priority;
|
||||
switch (segment)
|
||||
{
|
||||
case 0:
|
||||
|
|
|
@ -2,6 +2,14 @@ set(GTEST_ROOT_DIR ${TR_THIRD_PARTY_SOURCE_DIR}/googletest/googletest)
|
|||
|
||||
add_library(gtestall STATIC)
|
||||
|
||||
# GTest 1.12 triggers nullptr warnings in gcc 13
|
||||
set(CACHE_ID "${CMAKE_CXX_COMPILER_ID}_CXX_HAS-Wnull-dereference")
|
||||
string(TOLOWER "${CACHE_ID}" CACHE_ID)
|
||||
check_c_compiler_flag(-Wnull-dereference ${CACHE_ID})
|
||||
if(${CACHE_ID})
|
||||
target_compile_options(gtestall PRIVATE -Wno-null-dereference)
|
||||
endif()
|
||||
|
||||
target_sources(gtestall
|
||||
PRIVATE
|
||||
${GTEST_ROOT_DIR}/src/gtest-all.cc
|
||||
|
|
|
@ -71,49 +71,47 @@ TEST_F(NetTest, compact4)
|
|||
EXPECT_EQ(ExpectedPort, port);
|
||||
|
||||
// ...serialize it back again
|
||||
auto compact4 = std::array<std::byte, Compact4Bytes>{};
|
||||
auto out = std::data(compact4);
|
||||
auto buf = std::array<std::byte, tr_address::CompactAddrMaxBytes>{};
|
||||
auto out = std::data(buf);
|
||||
out = socket_address.to_compact(out);
|
||||
EXPECT_EQ(std::size(Compact4), static_cast<size_t>(out - std::data(compact4)));
|
||||
EXPECT_EQ(Compact4, compact4);
|
||||
EXPECT_EQ(std::size(Compact4), static_cast<size_t>(out - std::data(buf)));
|
||||
EXPECT_TRUE(std::equal(std::begin(Compact4), std::end(Compact4), std::data(buf)));
|
||||
|
||||
/// tr_address --> compact
|
||||
compact4.fill(std::byte{});
|
||||
out = std::data(compact4);
|
||||
buf.fill(std::byte{});
|
||||
out = std::data(buf);
|
||||
out = addr.to_compact(out);
|
||||
EXPECT_EQ(std::size(Compact4) - tr_port::CompactPortBytes, static_cast<size_t>(out - std::data(compact4)));
|
||||
EXPECT_TRUE(std::equal(
|
||||
std::data(Compact4),
|
||||
std::data(Compact4) + std::size(Compact4) - tr_port::CompactPortBytes,
|
||||
std::data(compact4)));
|
||||
EXPECT_EQ(std::size(Compact4) - tr_port::CompactPortBytes, static_cast<size_t>(out - std::data(buf)));
|
||||
EXPECT_TRUE(
|
||||
std::equal(std::data(Compact4), std::data(Compact4) + std::size(Compact4) - tr_port::CompactPortBytes, std::data(buf)));
|
||||
EXPECT_TRUE(std::all_of(
|
||||
std::begin(compact4) + std::size(Compact4) - tr_port::CompactPortBytes,
|
||||
std::end(compact4),
|
||||
std::begin(buf) + std::size(Compact4) - tr_port::CompactPortBytes,
|
||||
std::end(buf),
|
||||
[](std::byte const& byte) { return static_cast<unsigned char>(byte) == 0U; }));
|
||||
|
||||
/// sockaddr --> compact
|
||||
|
||||
auto [ss, sslen] = socket_address.to_sockaddr();
|
||||
compact4.fill(std::byte{});
|
||||
out = std::data(compact4);
|
||||
buf.fill(std::byte{});
|
||||
out = std::data(buf);
|
||||
out = tr_socket_address::to_compact(out, &ss);
|
||||
EXPECT_EQ(out, std::data(compact4) + std::size(compact4));
|
||||
EXPECT_EQ(Compact4, compact4);
|
||||
EXPECT_EQ(std::size(Compact4), static_cast<size_t>(out - std::data(buf)));
|
||||
EXPECT_TRUE(std::equal(std::begin(Compact4), std::end(Compact4), std::data(buf)));
|
||||
|
||||
/// compact <--> tr_pex
|
||||
|
||||
// extract them into a tr_pex struct...
|
||||
auto const pex = tr_pex::from_compact_ipv4(std::data(compact4), std::size(compact4), nullptr, 0U);
|
||||
auto const pex = tr_pex::from_compact_ipv4(std::data(buf), out - std::data(buf), nullptr, 0U);
|
||||
ASSERT_EQ(1U, std::size(pex));
|
||||
EXPECT_EQ(addr, pex.front().socket_address.address());
|
||||
EXPECT_EQ(port, pex.front().socket_address.port());
|
||||
|
||||
// ...serialize that back again too
|
||||
std::fill(std::begin(compact4), std::end(compact4), std::byte{});
|
||||
out = std::data(compact4);
|
||||
buf.fill(std::byte{});
|
||||
out = std::data(buf);
|
||||
out = tr_pex::to_compact(out, std::data(pex), std::size(pex));
|
||||
EXPECT_EQ(std::data(compact4) + std::size(compact4), out);
|
||||
EXPECT_EQ(Compact4, compact4);
|
||||
EXPECT_EQ(std::size(Compact4), static_cast<size_t>(out - std::data(buf)));
|
||||
EXPECT_TRUE(std::equal(std::begin(Compact4), std::end(Compact4), std::data(buf)));
|
||||
}
|
||||
|
||||
TEST_F(NetTest, compact6)
|
||||
|
|
Loading…
Reference in a new issue