From a0fb1f2d41c75bc35ec79e35fab936242b7710e2 Mon Sep 17 00:00:00 2001 From: Peter Dimov Date: Mon, 24 Jul 2017 12:29:32 +0300 Subject: [PATCH] Simplify 03/11 mismatch test because of MinGW; message() doesn't work --- include/boost/system/error_code.hpp | 15 ++++++++------- test/std_mismatch_test.cpp | 19 ++----------------- 2 files changed, 10 insertions(+), 24 deletions(-) diff --git a/include/boost/system/error_code.hpp b/include/boost/system/error_code.hpp index ec7e53a..0d64b2b 100644 --- a/include/boost/system/error_code.hpp +++ b/include/boost/system/error_code.hpp @@ -288,14 +288,15 @@ namespace boost return pc_->name(); } - virtual std::string message( int ev ) const - { - return pc_->message( ev ); - } + // we can't define message, because (1) it returns an std::string, + // which can be different between 03 and 11, and (2) on mingw, there + // are actually two `message` functions, not one, so it doesn't work + // even if we do - // we can't define default_error_condition or equivalent, - // so if called, it will crash, but that's still better than the - // alternative + // neither can we define default_error_condition or equivalent + + // if these functions are called, it will crash, but that's still + // better than the alternative of having the class layout change }; std_category std_cat_; diff --git a/test/std_mismatch_test.cpp b/test/std_mismatch_test.cpp index 13f7091..37a606b 100644 --- a/test/std_mismatch_test.cpp +++ b/test/std_mismatch_test.cpp @@ -38,15 +38,7 @@ static void test_generic_category() std::error_category const & st = bt; BOOST_TEST_CSTR_EQ( bt.name(), st.name() ); - - int ev = ENOENT; - - BOOST_TEST_EQ( bt.message( ev ), st.message( ev ) ); - - boost::system::error_code bc( ev, bt ); - std::error_code sc( bc ); - - BOOST_TEST_EQ( bc.message(), sc.message() ); + BOOST_TEST_EQ( bt.name(), st.name() ); } static void test_system_category() @@ -55,14 +47,7 @@ static void test_system_category() std::error_category const & st = bt; BOOST_TEST_CSTR_EQ( bt.name(), st.name() ); - - int ev = 5; - BOOST_TEST_EQ( bt.message( ev ), st.message( ev ) ); - - boost::system::error_code bc( ev, bt ); - std::error_code sc( bc ); - - BOOST_TEST_EQ( bc.message(), sc.message() ); + BOOST_TEST_EQ( bt.name(), st.name() ); } int main()