aboutsummaryrefslogtreecommitdiff
path: root/src/common
diff options
context:
space:
mode:
authorlizzie <lizzie@eden-emu.dev>2026-08-26 20:38:52 +0200
committercrueter <crueter@eden-emu.dev>2026-08-26 20:38:52 +0200
commitfaaf1bac6405658755421b2764cc4a16f8b800b8 (patch)
tree26a83924378c31ec6bf5f0d7c5506c6c89751a92 /src/common
parent0295dc5fff9b2977e753e7c126cc870abb07ee3f (diff)
[common/logging] Fix logging overflow on logging settings (#4308)
Signed-off-by: lizzie <lizzie@eden-emu.dev> - [x] I have read and followed the [Contribution Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/CONTRIBUTING.md#code-contributions). - [x] I have read and followed the [AI Policy](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/AI.md) - [x] I have read and followed the [Coding Guidelines](https://git.eden-emu.dev/eden-emu/eden/src/branch/master/docs/policies/Coding.md) to the best of my ability. ------------------- Apparently on FBSD we have plenty of stack space -- but not on Linux. Just fixes a stack overflow thing. Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/4308 Reviewed-by: MaranBr <maranbr@eden-emu.dev> Reviewed-by: CamilleLaVey <camillelavey99@gmail.com>
Diffstat (limited to 'src/common')
-rw-r--r--src/common/logging.cpp8
-rw-r--r--src/common/settings.cpp6
2 files changed, 6 insertions, 8 deletions
diff --git a/src/common/logging.cpp b/src/common/logging.cpp
index 84c83c6ebc..5915cca862 100644
--- a/src/common/logging.cpp
+++ b/src/common/logging.cpp
@@ -224,7 +224,7 @@ struct ColorConsoleBackend final : public Backend {
auto const df = GetDirectFormatArgs(entry);
// more restrictive, because take for example this simple prelude:
// [ 50.872256] Config <Info> common/settings.cpp:142:LogSettings:
- char buffer[128];
+ char buffer[256];
auto result = fmt::format_to_n(buffer, sizeof(buffer) - 1, "\x1b{}[{:4d}.{:06d}] {} <{}> {}:{}:{}: ", color_str, df.time_seconds, df.time_fractional, df.class_name, df.level_name, entry.filename, entry.line_num, entry.function, entry.message);
std::fwrite(buffer, 1, (std::min)(sizeof(buffer) - 1, result.size), stdout);
std::fwrite(entry.message, 1, entry.message_len, stdout);
@@ -425,14 +425,14 @@ void SetColorConsoleBackendEnabled(bool enabled) {
void FmtLogMessageImpl(Class log_class, Level log_level, const char* filename, unsigned int line_num, const char* function, fmt::string_view format, const fmt::format_args& args) {
if (logging_instance && logging_instance->filter.CheckMessage(log_class, log_level)) {
+ auto const flush = ::Settings::values.log_flush_line.GetValue();
char buffer[BUFSIZ];
auto result = fmt::vformat_to_n(buffer, sizeof(buffer) - 1, format, args);
- buffer[result.size] = '\0';
- auto const flush = ::Settings::values.log_flush_line.GetValue();
+ buffer[(std::min)(result.size, sizeof(buffer) - 1)] = '\0';
logging_instance->ForEachBackend([=](Backend& backend) {
backend.Write(Entry{
.message = buffer,
- .message_len = (std::min)(sizeof(buffer) - 1, result.size),
+ .message_len = (std::min)(result.size, sizeof(buffer) - 1),
.timestamp = std::chrono::duration_cast<std::chrono::microseconds>(std::chrono::steady_clock::now() - logging_instance->time_origin),
.log_class = log_class,
.log_level = log_level,
diff --git a/src/common/settings.cpp b/src/common/settings.cpp
index 6cc976fe51..e2c5b532ac 100644
--- a/src/common/settings.cpp
+++ b/src/common/settings.cpp
@@ -132,11 +132,9 @@ void LogSettings() {
}
}
}
-
- std::string settings_str{};
+ LOG_INFO(Config, "Eden Configuration:");
for (auto const& e : settings_list)
- settings_str += e;
- LOG_INFO(Config, "Eden Configuration:\n{}", settings_str);
+ LOG_INFO(Config, "{}", e);
#define LOG_PATH(NAME) \
LOG_INFO(Config, #NAME ": {}", Common::FS::PathToUTF8String(Common::FS::GetEdenPath(Common::FS::EdenPath::NAME)))
LOG_PATH(CacheDir);