Merging minor tested bugfixes from trunk.

[SVN r77592]
This commit is contained in:
Emil Dotchevski
2012-03-27 19:31:48 +00:00
parent a73deaa3f3
commit b3b930b7f5
5 changed files with 58 additions and 4 deletions

View File

@ -9,7 +9,7 @@
#if defined(_MSC_VER) #if defined(_MSC_VER)
#define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn) #define BOOST_ATTRIBUTE_NORETURN __declspec(noreturn)
#elif defined(__GNUC__) #elif defined(__GNUC__)
#define BOOST_ATTRIBUTE_NORETURN __attribute__((noreturn)) #define BOOST_ATTRIBUTE_NORETURN __attribute__((__noreturn__))
#else #else
#define BOOST_ATTRIBUTE_NORETURN #define BOOST_ATTRIBUTE_NORETURN
#endif #endif

View File

@ -3,4 +3,7 @@
//Distributed under the Boost Software License, Version 1.0. (See accompanying //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) //file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
#ifndef UUID_EE7ECCA0433B11E1923E37064924019B
#define UUID_EE7ECCA0433B11E1923E37064924019B
namespace boost { template <class Tag,class T> class error_info; } namespace boost { template <class Tag,class T> class error_info; }
#endif

View File

@ -310,6 +310,11 @@ boost
namespace namespace
exception_detail exception_detail
{ {
#if defined(__GNUC__)
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
# pragma GCC visibility push (default)
# endif
#endif
template <class T> template <class T>
struct struct
error_info_injector: error_info_injector:
@ -326,6 +331,11 @@ boost
{ {
} }
}; };
#if defined(__GNUC__)
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
# pragma GCC visibility pop
# endif
#endif
struct large_size { char c[256]; }; struct large_size { char c[256]; };
large_size dispatch_boost_exception( exception const * ); large_size dispatch_boost_exception( exception const * );
@ -373,6 +383,11 @@ boost
namespace namespace
exception_detail exception_detail
{ {
#if defined(__GNUC__)
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
# pragma GCC visibility push (default)
# endif
#endif
class class
clone_base clone_base
{ {
@ -386,6 +401,11 @@ boost
{ {
} }
}; };
#if defined(__GNUC__)
# if (__GNUC__ == 4 && __GNUC_MINOR__ >= 1) || (__GNUC__ > 4)
# pragma GCC visibility pop
# endif
#endif
inline inline
void void
@ -410,8 +430,15 @@ boost
class class
clone_impl: clone_impl:
public T, public T,
public clone_base public virtual clone_base
{ {
struct clone_tag { };
clone_impl( clone_impl const & x, clone_tag ):
T(x)
{
copy_boost_exception(this,&x);
}
public: public:
explicit explicit
@ -430,7 +457,7 @@ boost
clone_base const * clone_base const *
clone() const clone() const
{ {
return new clone_impl(*this); return new clone_impl(*this,clone_tag());
} }
void void

View File

@ -97,7 +97,7 @@ boost
{ {
shared_ptr<error_info_base> const & p = i->second; shared_ptr<error_info_base> const & p = i->second;
#ifndef BOOST_NO_RTTI #ifndef BOOST_NO_RTTI
BOOST_ASSERT( BOOST_EXCEPTION_DYNAMIC_TYPEID(*p).type_==ti.type_ ); BOOST_ASSERT( *BOOST_EXCEPTION_DYNAMIC_TYPEID(*p).type_==*ti.type_ );
#endif #endif
return p; return p;
} }

View File

@ -18,6 +18,30 @@
namespace namespace
boost boost
{ {
template <
class E >
inline
E const &
operator<<(
E const & x,
tuple< > const & v )
{
return x;
}
template <
class E,
class Tag1,class T1 >
inline
E const &
operator<<(
E const & x,
tuple<
error_info<Tag1,T1> > const & v )
{
return x << v.template get<0>();
}
template < template <
class E, class E,
class Tag1,class T1, class Tag1,class T1,