From 723ab7f15a4bdaa7dd26a8a672057cb0c901f36a Mon Sep 17 00:00:00 2001 From: Chris Robinson Date: Tue, 18 Jun 2019 23:04:24 -0700 Subject: [PATCH] Don't inline ifstream destructor --- Alc/compat.h | 2 +- Alc/helpers.cpp | 6 ++++++ 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/Alc/compat.h b/Alc/compat.h index 2e0ad1e7..4ffc40bf 100644 --- a/Alc/compat.h +++ b/Alc/compat.h @@ -76,10 +76,10 @@ public: ifstream(const wchar_t *filename, std::ios_base::openmode mode = std::ios_base::in); ifstream(const std::wstring &filename, std::ios_base::openmode mode = std::ios_base::in) : ifstream(filename.c_str(), mode) { } - ifstream(const char *filename, std::ios_base::openmode mode = std::ios_base::in); ifstream(const std::string &filename, std::ios_base::openmode mode = std::ios_base::in) : ifstream(filename.c_str(), mode) { } + ~ifstream() override; bool is_open() const noexcept { return mStreamBuf.is_open(); } }; diff --git a/Alc/helpers.cpp b/Alc/helpers.cpp index 3efa989d..ee0bb2dc 100644 --- a/Alc/helpers.cpp +++ b/Alc/helpers.cpp @@ -424,6 +424,12 @@ ifstream::ifstream(const char *filename, std::ios_base::openmode mode) clear(failbit); } +/* This is only here to ensure the compiler doesn't define an implicit + * destructor, which it tries to automatically inline and subsequently complain + * it can't inline without excessive code growth. + */ +ifstream::~ifstream() { } + } // namespace al const PathNamePair &GetProcBinary()