Fix order-of-initialization problem, add initialization_test.cpp to detect regression.

[SVN r39449]
This commit is contained in:
Beman Dawes
2007-09-21 16:42:27 +00:00
parent a9e9f426cc
commit 2aa7ebf758
3 changed files with 33 additions and 3 deletions

View File

@@ -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;
}

View File

@@ -42,6 +42,9 @@ project
: : : <define>BOOST_SYSTEM_DYN_LINK
: system_error_test_dll
]
[ run initialization_test.cpp
: : : <define>BOOST_SYSTEM_DYN_LINK
]
[ run header_only_test.cpp
: : : <link>static
]

View File

@@ -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 <boost/test/minimal.hpp>
#include <boost/system/error_code.hpp>
struct foo
{
foo()
{
boost::system::error_code ec;
ec == boost::system::posix::permission_denied;
}
} f;
int test_main( int, char ** )
{
return 0;
}