Boost logo

Boost-Commit :

From: bdawes_at_[hidden]
Date: 2007-09-21 12:42:28


Author: bemandawes
Date: 2007-09-21 12:42:27 EDT (Fri, 21 Sep 2007)
New Revision: 39449
URL: http://svn.boost.org/trac/boost/changeset/39449

Log:
Fix order-of-initialization problem, add initialization_test.cpp to detect regression.
Added:
   trunk/libs/system/test/initialization_test.cpp (contents, props changed)
Text files modified:
   trunk/libs/system/src/error_code.cpp | 5 ++---
   trunk/libs/system/test/Jamfile.v2 | 3 +++
   2 files changed, 5 insertions(+), 3 deletions(-)

Modified: trunk/libs/system/src/error_code.cpp
==============================================================================
--- trunk/libs/system/src/error_code.cpp (original)
+++ trunk/libs/system/src/error_code.cpp 2007-09-21 12:42:27 EDT (Fri, 21 Sep 2007)
@@ -214,9 +214,6 @@
     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 @@
 
     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;
     }
 

Modified: trunk/libs/system/test/Jamfile.v2
==============================================================================
--- trunk/libs/system/test/Jamfile.v2 (original)
+++ trunk/libs/system/test/Jamfile.v2 2007-09-21 12:42:27 EDT (Fri, 21 Sep 2007)
@@ -42,6 +42,9 @@
             : : : <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
          ]

Added: trunk/libs/system/test/initialization_test.cpp
==============================================================================
--- (empty file)
+++ trunk/libs/system/test/initialization_test.cpp 2007-09-21 12:42:27 EDT (Fri, 21 Sep 2007)
@@ -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;
+}


Boost-Commit list run by bdawes at acm.org, david.abrahams at rcn.com, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk