From 3e8fe622a7d1dc8ff9d3a34d975b556b8fd35a94 Mon Sep 17 00:00:00 2001 From: lizzie Date: Fri, 17 Oct 2025 22:12:58 +0200 Subject: [compat] Solaris build fixes for openssl, catch2; NetBSD build fixes (#2752) Signed-off-by: lizzie Co-authored-by: crueter Reviewed-on: https://git.eden-emu.dev/eden-emu/eden/pulls/2752 Reviewed-by: Shinmegumi Reviewed-by: crueter Reviewed-by: MaranBr Co-authored-by: lizzie Co-committed-by: lizzie --- src/common/demangle.cpp | 42 ++++++++++++++++++++---------------------- 1 file changed, 20 insertions(+), 22 deletions(-) (limited to 'src/common/demangle.cpp') diff --git a/src/common/demangle.cpp b/src/common/demangle.cpp index b2c9d126aa..8cb8c35515 100644 --- a/src/common/demangle.cpp +++ b/src/common/demangle.cpp @@ -1,6 +1,11 @@ +// SPDX-FileCopyrightText: Copyright 2025 Eden Emulator Project +// SPDX-License-Identifier: GPL-3.0-or-later + // SPDX-FileCopyrightText: Copyright 2020 yuzu Emulator Project // SPDX-License-Identifier: GPL-2.0-or-later +#include +#include #include #include "common/demangle.h" @@ -9,29 +14,22 @@ namespace Common { std::string DemangleSymbol(const std::string& mangled) { - auto is_itanium = [](const std::string& name) -> bool { - // A valid Itanium encoding requires 1-4 leading underscores, followed by 'Z'. - auto pos = name.find_first_not_of('_'); - return pos > 0 && pos <= 4 && pos < name.size() && name[pos] == 'Z'; - }; - - if (mangled.empty()) { - return mangled; - } - - char* demangled = nullptr; - SCOPE_EXIT { - std::free(demangled); - }; - - if (is_itanium(mangled)) { - demangled = llvm::itaniumDemangle(mangled.c_str()); - } - - if (!demangled) { - return mangled; + if (mangled.size() > 0) { + auto const is_itanium = [](std::string_view name) -> bool { + // A valid Itanium encoding requires 1-4 leading underscores, followed by 'Z'. + auto const pos = name.find_first_not_of('_'); + return pos > 0 && pos <= 4 && pos < name.size() && name[pos] == 'Z'; + }; + std::string ret = mangled; + if (is_itanium(mangled)) { + if (char* p = llvm::itaniumDemangle(mangled); p != nullptr) { + ret = std::string{p}; + std::free(p); + } + } + return ret; } - return demangled; + return std::string{}; } } // namespace Common -- cgit v1.2.3