From 84cfef8513b88068e8ef66223d09b6c48d35caad Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Fri, 16 Dec 2022 09:48:54 -0800 Subject: Avoid inlining certain exception functions --- al/eax/exception.cpp | 13 +++++-------- al/eax/exception.h | 17 +++++------------ al/effect.cpp | 1 + al/effects/effects.h | 1 + al/filter.cpp | 19 ++++++++++++------- 5 files changed, 24 insertions(+), 27 deletions(-) (limited to 'al') diff --git a/al/eax/exception.cpp b/al/eax/exception.cpp index 3b319648..435e7442 100644 --- a/al/eax/exception.cpp +++ b/al/eax/exception.cpp @@ -6,17 +6,14 @@ #include -EaxException::EaxException( - const char* context, - const char* message) - : - std::runtime_error{make_message(context, message)} +EaxException::EaxException(const char *context, const char *message) + : std::runtime_error{make_message(context, message)} { } +EaxException::~EaxException() = default; -std::string EaxException::make_message( - const char* context, - const char* message) + +std::string EaxException::make_message(const char *context, const char *message) { const auto context_size = (context ? std::string::traits_type::length(context) : 0); const auto has_contex = (context_size > 0); diff --git a/al/eax/exception.h b/al/eax/exception.h index 9a7acf71..3ae88cdc 100644 --- a/al/eax/exception.h +++ b/al/eax/exception.h @@ -6,19 +6,12 @@ #include -class EaxException : - public std::runtime_error -{ -public: - EaxException( - const char* context, - const char* message); - +class EaxException : public std::runtime_error { + static std::string make_message(const char *context, const char *message); -private: - static std::string make_message( - const char* context, - const char* message); +public: + EaxException(const char *context, const char *message); + ~EaxException() override; }; // EaxException diff --git a/al/effect.cpp b/al/effect.cpp index 21387cae..a4004a40 100644 --- a/al/effect.cpp +++ b/al/effect.cpp @@ -86,6 +86,7 @@ effect_exception::effect_exception(ALenum code, const char *msg, ...) : mErrorCo setMessage(msg, args); va_end(args); } +effect_exception::~effect_exception() = default; namespace { diff --git a/al/effects/effects.h b/al/effects/effects.h index acfeec6a..70960a7f 100644 --- a/al/effects/effects.h +++ b/al/effects/effects.h @@ -22,6 +22,7 @@ public: [[gnu::format(printf, 3, 4)]] #endif effect_exception(ALenum code, const char *msg, ...); + ~effect_exception() override; ALenum errorCode() const noexcept { return mErrorCode; } }; diff --git a/al/filter.cpp b/al/filter.cpp index 298bef5d..68daee76 100644 --- a/al/filter.cpp +++ b/al/filter.cpp @@ -57,16 +57,21 @@ public: #else [[gnu::format(printf, 3, 4)]] #endif - filter_exception(ALenum code, const char *msg, ...) : mErrorCode{code} - { - std::va_list args; - va_start(args, msg); - setMessage(msg, args); - va_end(args); - } + filter_exception(ALenum code, const char *msg, ...); + ~filter_exception() override; + ALenum errorCode() const noexcept { return mErrorCode; } }; +filter_exception::filter_exception(ALenum code, const char* msg, ...) : mErrorCode{code} +{ + std::va_list args; + va_start(args, msg); + setMessage(msg, args); + va_end(args); +} +filter_exception::~filter_exception() = default; + #define DEFINE_ALFILTER_VTABLE(T) \ const ALfilter::Vtable T##_vtable = { \ -- cgit v1.2.3