$include_dir="/home/hyper-archives/boost-commit/include"; include("$include_dir/msg-header.inc") ?>
Subject: [Boost-commit] svn:boost r48918 - in trunk/boost: . exception
From: emil_at_[hidden]
Date: 2008-09-22 14:27:59
Author: emildotchevski
Date: 2008-09-22 14:27:58 EDT (Mon, 22 Sep 2008)
New Revision: 48918
URL: http://svn.boost.org/trac/boost/changeset/48918
Log:
Improving CodeGear C++Builder 2009 compatibility
Text files modified: 
   trunk/boost/exception/exception.hpp      |     3 ++-                                     
   trunk/boost/exception/get_error_info.hpp |    31 ++++++++-----------------------         
   trunk/boost/exception_ptr.hpp            |     2 +-                                      
   3 files changed, 11 insertions(+), 25 deletions(-)
Modified: trunk/boost/exception/exception.hpp
==============================================================================
--- trunk/boost/exception/exception.hpp	(original)
+++ trunk/boost/exception/exception.hpp	2008-09-22 14:27:58 EDT (Mon, 22 Sep 2008)
@@ -313,7 +313,8 @@
     exception_detail::enable_error_info_return_type<T>::type
     enable_error_info( T const & x )
         {
-        return typename exception_detail::enable_error_info_return_type<T>::type(x);
+        typedef typename exception_detail::enable_error_info_return_type<T>::type rt;
+        return rt(x);
         }
 
     ////////////////////////////////////////////////////////////////////////
Modified: trunk/boost/exception/get_error_info.hpp
==============================================================================
--- trunk/boost/exception/get_error_info.hpp	(original)
+++ trunk/boost/exception/get_error_info.hpp	2008-09-22 14:27:58 EDT (Mon, 22 Sep 2008)
@@ -10,7 +10,6 @@
 #include <boost/exception/detail/error_info_impl.hpp>
 #include <boost/exception/detail/type_info.hpp>
 #include <boost/shared_ptr.hpp>
-#include <string.h>
 
 namespace
 boost
@@ -21,30 +20,16 @@
         struct
         strwrap
             {
-            char const * str;
+			std::string str;
+            char const * ptr;
             strwrap( char const * s ):
-                str(init(s))
+                str(s),
+                ptr(&str[0])
                 {
                 }
-            ~strwrap()
-                {
-                delete[] str;
-                }
-
             private:
-
             strwrap( strwrap const & );
             strwrap & operator=( strwrap const & );
-
-            static
-            char const *
-            init( char const * s )
-                {
-                size_t n=1+strlen(s);
-                char * str = new char[n];
-                (void) memcpy(str,s,n);
-                return str;
-                }
             };
 
         template <>
@@ -55,10 +40,10 @@
             shared_ptr<char const * const>
             get( exception const & x )
                 {
-                if( x.throw_function_ )
+                if( x.throw_function_ && *x.throw_function_ )
                     {
                     shared_ptr<strwrap> s(new strwrap(x.throw_function_));
-                    return shared_ptr<char const *>(s,&s->str);
+                    return shared_ptr<char const *>(s,&s->ptr);
                     }
                 else
                     return shared_ptr<char const * const>();
@@ -73,10 +58,10 @@
             shared_ptr<char const * const>
             get( exception const & x )
                 {
-                if( x.throw_file_ )
+                if( x.throw_file_ && *x.throw_file_ )
                     {
                     shared_ptr<strwrap> s(new strwrap(x.throw_file_));
-                    return shared_ptr<char const *>(s,&s->str);
+                    return shared_ptr<char const *>(s,&s->ptr);
                     }
                 else
                     return shared_ptr<char const * const>();
Modified: trunk/boost/exception_ptr.hpp
==============================================================================
--- trunk/boost/exception_ptr.hpp	(original)
+++ trunk/boost/exception_ptr.hpp	2008-09-22 14:27:58 EDT (Mon, 22 Sep 2008)
@@ -99,7 +99,7 @@
 
         private:
 
-        clone_base const *
+		exception_detail::clone_base const *
         clone() const
             {
             return new unknown_exception(*this);