Boost logo

Boost :

From: David Deakins (ddeakins_at_[hidden])
Date: 2007-10-24 00:02:30


Gennadiy Rozental wrote:
> "David Deakins" <ddeakins_at_[hidden]> wrote in message
>>
>> - The Windows CE CRT does not support _set_se_translator or
>> _set_invalid_parameter_handler.
>
> There already workarounds in place for different compilers for missing
> symbols above. Can you try to fit in with additional conditions instead of
> extra ifdefs inside the code
>

My apologies for not studying the code more carefully. I have attached
a new version of the patch following the existing method for handling
these missing symbols.

>> - The Windows CE CRT supplies _vsnprintf instead of vsnprintf.
>
> This one applied
>
>> - The Windows CE CRT does not support errno.
>
> What does it support instead?
>

It only provides the Win32 GetLastError() method for this functionality.
  I have revised the patch to reflect this.

Thanks,
-Dave

Index: execution_monitor.ipp
===================================================================
--- execution_monitor.ipp (revision 40282)
+++ execution_monitor.ipp (working copy)
@@ -65,7 +65,7 @@
 # include <stdint.h>
 #endif
 
-# if BOOST_WORKAROUND(BOOST_MSVC, < 1300 )
+# if BOOST_WORKAROUND(BOOST_MSVC, < 1300 ) || defined(UNDER_CE)
 typedef void* uintptr_t;
 # endif
 
@@ -101,7 +101,7 @@
 # include <crtdbg.h>
 # endif
 
-# if !BOOST_WORKAROUND(_MSC_VER, >= 1400 )
+# if !BOOST_WORKAROUND(_MSC_VER, >= 1400 ) || defined(UNDER_CE)
 
 typedef void* _invalid_parameter_handler;
 
@@ -113,7 +113,7 @@
 
 # endif
 
-# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564))
+# if BOOST_WORKAROUND(__BORLANDC__, BOOST_TESTED_AT(0x0564)) || defined(UNDER_CE)
 
 namespace { void _set_se_translator( void* ) {} }
 
@@ -141,7 +141,9 @@
 
 #endif
 
+#ifndef UNDER_CE
 #include <errno.h>
+#endif
 
 #include <boost/test/detail/suppress_warnings.hpp>
 
@@ -158,7 +160,8 @@
 #ifdef __BORLANDC__
 # define BOOST_TEST_VSNPRINTF( a1, a2, a3, a4 ) std::vsnprintf( (a1), (a2), (a3), (a4) )
 #elif BOOST_WORKAROUND(_MSC_VER, <= 1310) || \
- BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3000))
+ BOOST_WORKAROUND(__MWERKS__, BOOST_TESTED_AT(0x3000)) || \
+ defined(UNDER_CE)
 # define BOOST_TEST_VSNPRINTF( a1, a2, a3, a4 ) _vsnprintf( (a1), (a2), (a3), (a4) )
 #else
 # define BOOST_TEST_VSNPRINTF( a1, a2, a3, a4 ) vsnprintf( (a1), (a2), (a3), (a4) )
@@ -968,10 +971,12 @@
     }
 
     detail::system_signal_exception SSE( this );
+
+ int ret_val = 0;
 
     __try {
         __try {
- return detail::do_invoke( m_custom_translators , F );
+ ret_val = detail::do_invoke( m_custom_translators , F );
         }
         __except( SSE( GetExceptionCode(), GetExceptionInformation() ) ) {
             throw SSE;
@@ -986,7 +991,7 @@
         }
     }
 
- return 0;
+ return ret_val;
 }
 
 //____________________________________________________________________________//
@@ -1094,9 +1099,14 @@
 // ************************************************************************** //
 
 system_error::system_error()
+#ifdef UNDER_CE
+: p_errno( GetLastError() )
+#else
 : p_errno( errno )
+#endif
 {}
 
+
 //____________________________________________________________________________//
 
 } // namespace boost


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk