diff --git a/test/abi_test_lib.cpp b/test/abi_test_lib.cpp index db46416..4cb2150 100644 --- a/test/abi_test_lib.cpp +++ b/test/abi_test_lib.cpp @@ -6,6 +6,7 @@ // http://www.boost.org/LICENSE_1_0.txt #include +#include #include #if defined(BOOST_DISABLE_THREADS) @@ -22,10 +23,21 @@ BOOST_PRAGMA_MESSAGE( "BOOST_NO_CXX11_HDR_ATOMIC is not defined" ) void abi_test_1( boost::shared_ptr & p ) { + BOOST_TEST_EQ( p.use_count(), 1 ); + p.reset(); + + BOOST_TEST_EQ( p.use_count(), 0 ); } boost::shared_ptr abi_test_2( boost::shared_ptr const & p ) { + BOOST_TEST_EQ( p.use_count(), 1 ); + return p; } + +boost::shared_ptr abi_test_3() +{ + return boost::shared_ptr( static_cast( 0 ) ); +} diff --git a/test/abi_test_main.cpp b/test/abi_test_main.cpp index f1de554..2fb6a8c 100644 --- a/test/abi_test_main.cpp +++ b/test/abi_test_main.cpp @@ -23,6 +23,7 @@ BOOST_PRAGMA_MESSAGE( "BOOST_NO_CXX11_HDR_ATOMIC is not defined" ) void abi_test_1( boost::shared_ptr & p ); boost::shared_ptr abi_test_2( boost::shared_ptr const & p ); +boost::shared_ptr abi_test_3(); static int deleter_called; @@ -67,5 +68,15 @@ int main() BOOST_TEST_EQ( deleter_called, 1 ); } + { + boost::shared_ptr p = abi_test_3(); + + BOOST_TEST_EQ( p.use_count(), 1 ); + + p.reset(); + + BOOST_TEST_EQ( p.use_count(), 0 ); + } + return boost::report_errors(); }