diff --git a/src/error_code.cpp b/src/error_code.cpp index cf7a1c2..ef3efee 100644 --- a/src/error_code.cpp +++ b/src/error_code.cpp @@ -214,9 +214,6 @@ namespace error_condition default_error_condition( int ev ) const; }; - const posix_error_category posix_category_const; - const system_error_category system_category_const; - // posix_error_category implementation ---------------------------------// const char * posix_error_category::name() const @@ -378,11 +375,13 @@ namespace boost BOOST_SYSTEM_DECL const error_category & get_system_category() { + static const system_error_category system_category_const; return system_category_const; } BOOST_SYSTEM_DECL const error_category & get_posix_category() { + static const posix_error_category posix_category_const; return posix_category_const; } diff --git a/test/Jamfile.v2 b/test/Jamfile.v2 index d6f1d1c..c608255 100644 --- a/test/Jamfile.v2 +++ b/test/Jamfile.v2 @@ -42,6 +42,9 @@ project : : : BOOST_SYSTEM_DYN_LINK : system_error_test_dll ] + [ run initialization_test.cpp + : : : BOOST_SYSTEM_DYN_LINK + ] [ run header_only_test.cpp : : : static ] diff --git a/test/initialization_test.cpp b/test/initialization_test.cpp new file mode 100644 index 0000000..7ccd594 --- /dev/null +++ b/test/initialization_test.cpp @@ -0,0 +1,28 @@ +// initialization_test.cpp -------------------------------------------------// + +// Copyright Christoper Kohlhoff 2007 + +// Distributed under the Boost Software License, Version 1.0. (See accompanying +// file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt) + +// See library home page at http://www.boost.org/libs/system + +// This test verifiies that the error_category vtable does not suffer from +// order-of-initialization problems. + +#include +#include + +struct foo +{ + foo() + { + boost::system::error_code ec; + ec == boost::system::posix::permission_denied; + } +} f; + +int test_main( int, char ** ) +{ + return 0; +}