diff --git a/.github/workflows/linux.yml b/.github/workflows/linux.yml index 4557f606c0..30cc9b7993 100644 --- a/.github/workflows/linux.yml +++ b/.github/workflows/linux.yml @@ -9,20 +9,18 @@ jobs: strategy: fail-fast: false matrix: - # temporarily disable gcc - # toolchain: [gcc-10.3, gcc-11.3, gcc-12.2, clang-12, clang-13, clang-14, clang-15] - toolchain: [clang-12, clang-13, clang-14, clang-15] + toolchain: [gcc-10.3, gcc-11.3, gcc-12.2, clang-12, clang-13, clang-14, clang-15] preset: [test01, test02, test03, test04, test05, test06, test07, test08, nopch, full] include: - # - toolchain: gcc-10.3 - # docker: 33_2 - # compiler: gcc - # - toolchain: gcc-11.3 - # docker: 35_2 - # compiler: gcc - # - toolchain: gcc-12.2 - # docker: 37_1 - # compiler: gcc + - toolchain: gcc-10.3 + docker: 33_2 + compiler: gcc + - toolchain: gcc-11.3 + docker: 35_2 + compiler: gcc + - toolchain: gcc-12.2 + docker: 37_1 + compiler: gcc - toolchain: clang-12 docker: 34_2 compiler: clang diff --git a/src/crypto/asymmetric/base/Key.cpp b/src/crypto/asymmetric/base/Key.cpp index 4a0416805f..dc29eaca45 100644 --- a/src/crypto/asymmetric/base/Key.cpp +++ b/src/crypto/asymmetric/base/Key.cpp @@ -111,7 +111,8 @@ auto Key::operator=(const Key& rhs) noexcept -> Key& if (imp_ != rhs.imp_) { auto* old{imp_}; imp_ = rhs.imp_->clone(get_allocator()); - delete old; + auto deleter = old->get_deleter(); + std::invoke(deleter, old); } return *this; @@ -170,7 +171,8 @@ auto Key::Version() const noexcept -> VersionNumber { return imp_->Version(); } Key::~Key() { if (nullptr != imp_) { - delete imp_; + auto deleter = imp_->get_deleter(); + std::invoke(deleter, imp_); imp_ = nullptr; } } diff --git a/src/crypto/asymmetric/base/KeyPrivate.cpp b/src/crypto/asymmetric/base/KeyPrivate.cpp index 8942580541..ab15e989be 100644 --- a/src/crypto/asymmetric/base/KeyPrivate.cpp +++ b/src/crypto/asymmetric/base/KeyPrivate.cpp @@ -302,14 +302,6 @@ auto KeyPrivate::HasPublic() const noexcept -> bool { return false; } auto KeyPrivate::IsValid() const noexcept -> bool { return false; } -auto KeyPrivate::operator delete( - KeyPrivate* ptr, - std::destroying_delete_t) noexcept -> void -{ - auto deleter = ptr->get_deleter(); - std::invoke(deleter, ptr); -} - auto KeyPrivate::PreferredHash() const noexcept -> crypto::HashType { return HashType::Error; diff --git a/src/crypto/asymmetric/base/KeyPrivate.hpp b/src/crypto/asymmetric/base/KeyPrivate.hpp index d3937964a9..375b4bd941 100644 --- a/src/crypto/asymmetric/base/KeyPrivate.hpp +++ b/src/crypto/asymmetric/base/KeyPrivate.hpp @@ -78,9 +78,6 @@ class KeyPrivate : virtual public internal::Key, { public: static auto Blank(allocator_type alloc) noexcept -> KeyPrivate*; - static auto operator delete( - KeyPrivate* ptr, - std::destroying_delete_t) noexcept -> void; static auto Reset(asymmetric::Key& key) noexcept -> void; [[nodiscard]] virtual auto asEllipticCurvePrivate() const noexcept