Ticket #2100: boost_thread_hpp_BOOST_NO_EXCEPTIONS_20100507.diff

File boost_thread_hpp_BOOST_NO_EXCEPTIONS_20100507.diff, 3.7 KB (added by nstewart@…, 12 years ago)

Updated patch for boost/thread/... for pthread, win32 and future handling of BOOST_NO_EXCEPTIONS

  • thread/pthread/thread_data.hpp

     
    7979
    8080            void check_for_interruption()
    8181            {
     82#ifndef BOOST_NO_EXCEPTIONS
    8283                if(thread_info->interrupt_requested)
    8384                {
    8485                    thread_info->interrupt_requested=false;
    8586                    throw thread_interrupted();
    8687                }
     88#endif
    8789            }
    8890           
    8991            void operator=(interruption_checker&);
  • thread/win32/thread_heap_alloc.hpp

     
    7575        inline T* heap_new()
    7676        {
    7777            void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
     78#ifndef BOOST_NO_EXCEPTIONS
    7879            try
     80#endif
    7981            {
    8082                T* const data=new (heap_memory) T();
    8183                return data;
    8284            }
     85#ifndef BOOST_NO_EXCEPTIONS
    8386            catch(...)
    8487            {
    8588                free_raw_heap_memory(heap_memory);
    8689                throw;
    8790            }
     91#endif
    8892        }
    8993
    9094#ifndef BOOST_NO_RVALUE_REFERENCES
     
    171175        inline T* heap_new_impl(A1 a1,A2 a2)
    172176        {
    173177            void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
     178#ifndef BOOST_NO_EXCEPTIONS
    174179            try
     180#endif
    175181            {
    176182                T* const data=new (heap_memory) T(a1,a2);
    177183                return data;
    178184            }
     185#ifndef BOOST_NO_EXCEPTIONS
    179186            catch(...)
    180187            {
    181188                free_raw_heap_memory(heap_memory);
    182189                throw;
    183190            }
     191#endif
    184192        }
    185193
    186194        template<typename T,typename A1,typename A2,typename A3>
     
    203211        inline T* heap_new_impl(A1 a1,A2 a2,A3 a3,A4 a4)
    204212        {
    205213            void* const heap_memory=allocate_raw_heap_memory(sizeof(T));
     214#ifndef BOOST_NO_EXCEPTIONS
    206215            try
     216#endif
    207217            {
    208218                T* const data=new (heap_memory) T(a1,a2,a3,a4);
    209219                return data;
    210220            }
     221#ifndef BOOST_NO_EXCEPTIONS
    211222            catch(...)
    212223            {
    213224                free_raw_heap_memory(heap_memory);
    214225                throw;
    215226            }
     227#endif
    216228        }
    217229
    218230
  • thread/win32/once.hpp

     
    9292            status=BOOST_INTERLOCKED_COMPARE_EXCHANGE(&flag.status,running_value,0);
    9393            if(!status)
    9494            {
     95#ifndef BOOST_NO_EXCEPTIONS
    9596                try
     97#endif
    9698                {
    9799                    if(!event_handle)
    98100                    {
     
    121123                    throw_count=::boost::detail::interlocked_read_acquire(&flag.throw_count);
    122124                    break;
    123125                }
     126#ifndef BOOST_NO_EXCEPTIONS
    124127                catch(...)
    125128                {
    126129                    if(counted)
     
    138141                    }
    139142                    throw;
    140143                }
     144#endif
    141145            }
    142146
    143147            if(!counted)
  • thread.hpp

     
    2121#include <boost/thread/locks.hpp>
    2222#include <boost/thread/shared_mutex.hpp>
    2323#include <boost/thread/barrier.hpp>
     24
     25// boost::thread::future requires exception handling
     26// due to boost::exception::exception_ptr dependency
     27
     28#ifndef BOOST_NO_EXCEPTIONS
    2429#include <boost/thread/future.hpp>
     30#endif
    2531
    2632#endif