diff options
| author | Stefan Boberg <[email protected]> | 2025-11-01 14:04:35 +0100 |
|---|---|---|
| committer | GitHub Enterprise <[email protected]> | 2025-11-01 14:04:35 +0100 |
| commit | a58da97f98697580bf128ed5723ba720cc30f0dc (patch) | |
| tree | 798e392ddf76128a506293dc0803aaf852203dcd /src/zencore | |
| parent | fix use-after-free in TEST_CASE("compactcas.threadedinsert") (#620) (diff) | |
| download | zen-a58da97f98697580bf128ed5723ba720cc30f0dc.tar.xz zen-a58da97f98697580bf128ed5723ba720cc30f0dc.zip | |
Various fixes to address issues flagged by gcc / non-UE toolchain build (#621)
* gcc: avoid using memset on nontrivial struct
* redundant `return std::move`
* fixed various compilation issues flagged by gcc
* fix issue in xmake.lua detecting whether we are building with the UE toolchain or not
* add GCC ignore -Wundef (comment is inaccurate)
* remove redundant std::move
* don't catch exceptions by value
* unreferenced variables
* initialize "by the book" instead of memset
* remove unused exception reference
* add #include <cstring> to fix gcc build
* explicitly poulate KeyValueMap by traversing input spans fixes gcc compilation
* remove unreferenced variable
* eliminate redundant `std::move` which gcc complains about
* fix gcc compilation by including <cstring>
* tag unreferenced variable to fix gcc compilation
* fixes for various cases of naming members the same as their type
Diffstat (limited to 'src/zencore')
| -rw-r--r-- | src/zencore/compactbinaryjson.cpp | 7 | ||||
| -rw-r--r-- | src/zencore/compactbinaryutil.cpp | 2 | ||||
| -rw-r--r-- | src/zencore/filesystem.cpp | 2 | ||||
| -rw-r--r-- | src/zencore/include/zencore/compactbinaryutil.h | 2 | ||||
| -rw-r--r-- | src/zencore/include/zencore/jobqueue.h | 14 | ||||
| -rw-r--r-- | src/zencore/jobqueue.cpp | 43 | ||||
| -rw-r--r-- | src/zencore/memory/mallocrpmalloc.cpp | 1 | ||||
| -rw-r--r-- | src/zencore/memory/memoryarena.cpp | 2 | ||||
| -rw-r--r-- | src/zencore/memtrack/tagtrace.cpp | 5 |
9 files changed, 39 insertions, 39 deletions
diff --git a/src/zencore/compactbinaryjson.cpp b/src/zencore/compactbinaryjson.cpp index 02f22ba4d..abbec360a 100644 --- a/src/zencore/compactbinaryjson.cpp +++ b/src/zencore/compactbinaryjson.cpp @@ -752,13 +752,6 @@ TEST_CASE("uson.json") Buffer.insert(Buffer.end(), AppendBytes, AppendBytes + Count); }; - auto Append = [&](const CbFieldView& Field) { - Field.WriteToStream([&](const void* Data, size_t Count) { - const uint8_t* AppendBytes = reinterpret_cast<const uint8_t*>(Data); - Buffer.insert(Buffer.end(), AppendBytes, AppendBytes + Count); - }); - }; - CbObject DataObjects[] = {MakeObject("Empty object"sv, {}), MakeObject("OneField object"sv, {5}), MakeObject("TwoField object"sv, {-5, 999}), diff --git a/src/zencore/compactbinaryutil.cpp b/src/zencore/compactbinaryutil.cpp index 074bdaffd..d9703bf1a 100644 --- a/src/zencore/compactbinaryutil.cpp +++ b/src/zencore/compactbinaryutil.cpp @@ -14,7 +14,7 @@ ValidateAndReadCompactBinaryObject(const SharedBuffer&& Payload, CbValidateError { if (OutError = ValidateCompactBinary(Payload.GetView(), CbValidateMode::Default); OutError == CbValidateError::None) { - CbObject Object(std::move(Payload)); + CbObject Object(Payload); if (Object.GetView().GetSize() != Payload.GetSize()) { OutError |= CbValidateError::OutOfBounds; diff --git a/src/zencore/filesystem.cpp b/src/zencore/filesystem.cpp index 8a58f136e..7f341818b 100644 --- a/src/zencore/filesystem.cpp +++ b/src/zencore/filesystem.cpp @@ -2695,7 +2695,7 @@ GetDirectoryContent(const std::filesystem::path& RootDir, }, WorkerThreadPool::EMode::DisableBacklog); } - catch (const std::exception Ex) + catch (const std::exception& Ex) { ZEN_ERROR("Failed scheduling work to scan folder '{}'. Reason: '{}'", Path, Ex.what()); PendingWorkCount.CountDown(); diff --git a/src/zencore/include/zencore/compactbinaryutil.h b/src/zencore/include/zencore/compactbinaryutil.h index eecc3344b..2617c749f 100644 --- a/src/zencore/include/zencore/compactbinaryutil.h +++ b/src/zencore/include/zencore/compactbinaryutil.h @@ -57,7 +57,7 @@ namespace compactbinary_helpers { inline void WriteArray(std::span<const Type> Values, std::string_view ArrayName, CbWriter& Output) { Output.BeginArray(ArrayName); - for (const Type Value : Values) + for (const Type& Value : Values) { Output << Value; } diff --git a/src/zencore/include/zencore/jobqueue.h b/src/zencore/include/zencore/jobqueue.h index 470ed3fc6..d348bd021 100644 --- a/src/zencore/include/zencore/jobqueue.h +++ b/src/zencore/include/zencore/jobqueue.h @@ -48,7 +48,7 @@ public: virtual bool CancelJob(JobId Id) = 0; virtual void Stop() = 0; - enum class Status : uint32_t + enum class JobStatus : uint32_t { Queued, Running, @@ -56,7 +56,7 @@ public: Completed }; - struct State + struct JobState { std::string CurrentOp; std::string CurrentOpDetails; @@ -68,8 +68,8 @@ public: struct JobInfo { - JobId Id; - Status Status; + JobId Id; + JobStatus Status; }; virtual std::vector<JobInfo> GetJobs() = 0; @@ -77,8 +77,8 @@ public: struct JobDetails { std::string Name; - Status Status; - State State; + JobStatus Status; + JobState State; std::chrono::system_clock::time_point CreateTime; std::chrono::system_clock::time_point StartTime; std::chrono::system_clock::time_point EndTime; @@ -89,7 +89,7 @@ public: // Will only respond once when status is Complete or Aborted virtual std::optional<JobDetails> Get(JobId Id) = 0; - static std::string_view ToString(Status Status); + static std::string_view ToString(JobStatus Status); }; std::unique_ptr<JobQueue> MakeJobQueue(int WorkerCount, std::string_view QueueName); diff --git a/src/zencore/jobqueue.cpp b/src/zencore/jobqueue.cpp index bd391909d..75c1be42b 100644 --- a/src/zencore/jobqueue.cpp +++ b/src/zencore/jobqueue.cpp @@ -45,7 +45,7 @@ public: JobId Id; JobFunction Callback; std::atomic_bool CancelFlag; - State State; + JobState State; JobClock::Tick CreateTick; JobClock::Tick StartTick; JobClock::Tick EndTick; @@ -223,7 +223,7 @@ public: QueueLock.WithSharedLock([&]() { for (auto It : RunningJobs) { - Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Running}); + Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Running}); } for (auto It : CompletedJobs) { @@ -232,7 +232,7 @@ public: DeadJobs.push_back(JobId{It.first}); continue; } - Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Completed}); + Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Completed}); } for (auto It : AbortedJobs) { @@ -241,11 +241,11 @@ public: DeadJobs.push_back(JobId{It.first}); continue; } - Jobs.push_back({.Id = JobId{It.first}, .Status = Status::Aborted}); + Jobs.push_back({.Id = JobId{It.first}, .Status = JobStatus::Aborted}); } for (auto It : QueuedJobs) { - Jobs.push_back({.Id = It->Id, .Status = Status::Queued}); + Jobs.push_back({.Id = It->Id, .Status = JobStatus::Queued}); } }); if (!DeadJobs.empty()) @@ -264,7 +264,7 @@ public: // Will only respond once when Complete is true virtual std::optional<JobDetails> Get(JobId Id) override { - auto Convert = [](Status Status, Job& Job) -> JobDetails { + auto Convert = [](JobStatus Status, Job& Job) -> JobDetails { return JobDetails{ .Name = Job.Name, .Status = Status, @@ -286,25 +286,25 @@ public: QueueLock.WithExclusiveLock([&]() { if (auto It = RunningJobs.find(Id.Id); It != RunningJobs.end()) { - Result = Convert(Status::Running, *It->second); + Result = Convert(JobStatus::Running, *It->second); return; } if (auto It = CompletedJobs.find(Id.Id); It != CompletedJobs.end()) { - Result = Convert(Status::Completed, *It->second); + Result = Convert(JobStatus::Completed, *It->second); CompletedJobs.erase(It); return; } if (auto It = AbortedJobs.find(Id.Id); It != AbortedJobs.end()) { - Result = Convert(Status::Aborted, *It->second); + Result = Convert(JobStatus::Aborted, *It->second); AbortedJobs.erase(It); return; } if (auto It = std::find_if(QueuedJobs.begin(), QueuedJobs.end(), [&Id](const RefPtr<Job>& Job) { return Job->Id.Id == Id.Id; }); It != QueuedJobs.end()) { - Result = Convert(Status::Queued, *(*It)); + Result = Convert(JobStatus::Queued, *(*It)); return; } }); @@ -421,22 +421,22 @@ public: }; std::string_view -JobQueue::ToString(Status Status) +JobQueue::ToString(JobStatus Status) { using namespace std::literals; switch (Status) { - case JobQueue::Status::Queued: + case JobQueue::JobStatus::Queued: return "Queued"sv; break; - case JobQueue::Status::Running: + case JobQueue::JobStatus::Running: return "Running"sv; break; - case JobQueue::Status::Aborted: + case JobQueue::JobStatus::Aborted: return "Aborted"sv; break; - case JobQueue::Status::Completed: + case JobQueue::JobStatus::Completed: return "Completed"sv; break; default: @@ -496,6 +496,7 @@ TEST_CASE("JobQueue") } Context.ReportProgress("done", "", 100, 0); }); + ZEN_UNUSED(Id); }, WorkerThreadPool::EMode::EnableBacklog); } @@ -528,22 +529,22 @@ TEST_CASE("JobQueue") RemainingJobs.reserve(Statuses.size()); for (const auto& It : Statuses) { - JobQueue::Status Status = It.Status; + JobQueue::JobStatus Status = It.Status; JobId Id = It.Id; std::optional<JobQueue::JobDetails> CurrentState; - if (Status != JobQueue::Status::Queued) + if (Status != JobQueue::JobStatus::Queued) { CurrentState = Queue->Get(Id); CHECK(CurrentState.has_value()); } switch (Status) { - case JobQueue::Status::Queued: + case JobQueue::JobStatus::Queued: PendingCount++; RemainingJobs.push_back(Id); break; - case JobQueue::Status::Running: + case JobQueue::JobStatus::Running: ZEN_DEBUG( "{} running. '{}{}' {}% '{}'", Id.Id, @@ -556,10 +557,10 @@ TEST_CASE("JobQueue") Join(CurrentState->State.Messages, " "sv)); RemainingJobs.push_back(Id); break; - case JobQueue::Status::Aborted: + case JobQueue::JobStatus::Aborted: ZEN_DEBUG("{} aborted. Reason: '{}'", Id.Id, CurrentState->State.AbortReason); break; - case JobQueue::Status::Completed: + case JobQueue::JobStatus::Completed: ZEN_DEBUG("{} completed. '{}'", Id.Id, Join(CurrentState->State.Messages, " "sv)); break; default: diff --git a/src/zencore/memory/mallocrpmalloc.cpp b/src/zencore/memory/mallocrpmalloc.cpp index ffced27c9..c45186b77 100644 --- a/src/zencore/memory/mallocrpmalloc.cpp +++ b/src/zencore/memory/mallocrpmalloc.cpp @@ -7,6 +7,7 @@ #if ZEN_RPMALLOC_ENABLED # include "rpmalloc.h" +# include <cstring> /** Value we fill a memory block with after it is free, in UE_BUILD_DEBUG **/ # define DEBUG_FILL_FREED (0xdd) diff --git a/src/zencore/memory/memoryarena.cpp b/src/zencore/memory/memoryarena.cpp index 9c907a66d..8807f3264 100644 --- a/src/zencore/memory/memoryarena.cpp +++ b/src/zencore/memory/memoryarena.cpp @@ -2,6 +2,8 @@ #include <zencore/memory/memoryarena.h> +#include <cstring> + namespace zen { MemoryArena::~MemoryArena() diff --git a/src/zencore/memtrack/tagtrace.cpp b/src/zencore/memtrack/tagtrace.cpp index 473bd773b..70a74365d 100644 --- a/src/zencore/memtrack/tagtrace.cpp +++ b/src/zencore/memtrack/tagtrace.cpp @@ -141,7 +141,10 @@ private: static uint32_t KeyHash(int32_t Key) { return static_cast<uint32>(Key); } static void ClearEntries(FTagNameSetEntry* Entries, int32_t EntryCount) { - memset(Entries, 0, EntryCount * sizeof(FTagNameSetEntry)); + for (int32_t Index = 0; Index < EntryCount; ++Index) + { + Entries[Index].SetKeyValue(0, false); + } } }; typedef TGrowOnlyLockFreeHash<FTagNameSetEntry, int32_t, bool> FTagNameSet; |