aboutsummaryrefslogtreecommitdiff
path: root/src/zencore
diff options
context:
space:
mode:
authorStefan Boberg <[email protected]>2025-11-01 14:04:35 +0100
committerGitHub Enterprise <[email protected]>2025-11-01 14:04:35 +0100
commita58da97f98697580bf128ed5723ba720cc30f0dc (patch)
tree798e392ddf76128a506293dc0803aaf852203dcd /src/zencore
parentfix use-after-free in TEST_CASE("compactcas.threadedinsert") (#620) (diff)
downloadzen-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.cpp7
-rw-r--r--src/zencore/compactbinaryutil.cpp2
-rw-r--r--src/zencore/filesystem.cpp2
-rw-r--r--src/zencore/include/zencore/compactbinaryutil.h2
-rw-r--r--src/zencore/include/zencore/jobqueue.h14
-rw-r--r--src/zencore/jobqueue.cpp43
-rw-r--r--src/zencore/memory/mallocrpmalloc.cpp1
-rw-r--r--src/zencore/memory/memoryarena.cpp2
-rw-r--r--src/zencore/memtrack/tagtrace.cpp5
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;