diff options
Diffstat (limited to 'boost/system/detail/error_code.ipp')
-rw-r--r-- | boost/system/detail/error_code.ipp | 57 |
1 files changed, 31 insertions, 26 deletions
diff --git a/boost/system/detail/error_code.ipp b/boost/system/detail/error_code.ipp index 51ba3f4747..a2b3f11c48 100644 --- a/boost/system/detail/error_code.ipp +++ b/boost/system/detail/error_code.ipp @@ -21,9 +21,9 @@ #include <cstring> // for strerror/strerror_r # if defined( BOOST_WINDOWS_API ) -# include <boost/detail/winapi/error_codes.hpp> -# include <boost/detail/winapi/error_handling.hpp> -# include <boost/detail/winapi/character_code_conversion.hpp> +# include <boost/winapi/error_codes.hpp> +# include <boost/winapi/error_handling.hpp> +# include <boost/winapi/character_code_conversion.hpp> # if !BOOST_PLAT_WINDOWS_RUNTIME # include <boost/system/detail/local_free_on_destruction.hpp> # endif @@ -154,7 +154,6 @@ namespace # endif if ( sz > sizeof(buf) ) std::free( bp ); - sz = 0; return msg; # endif // else POSIX version of strerror_r # endif // else use strerror_r @@ -187,7 +186,7 @@ namespace # if defined(BOOST_WINDOWS_API) - using namespace boost::detail::winapi; // for error codes + using namespace boost::winapi; // for error codes # endif @@ -383,15 +382,15 @@ namespace std::wstring buf(128, wchar_t()); for (;;) { - boost::detail::winapi::DWORD_ retval = boost::detail::winapi::FormatMessageW( - boost::detail::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ | - boost::detail::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_, + boost::winapi::DWORD_ retval = boost::winapi::FormatMessageW( + boost::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ | + boost::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_, NULL, ev, - boost::detail::winapi::MAKELANGID_(boost::detail::winapi::LANG_NEUTRAL_, - boost::detail::winapi::SUBLANG_DEFAULT_), // Default language + boost::winapi::MAKELANGID_(boost::winapi::LANG_NEUTRAL_, + boost::winapi::SUBLANG_DEFAULT_), // Default language &buf[0], - buf.size(), + static_cast<boost::winapi::DWORD_>(buf.size()), NULL ); @@ -400,8 +399,8 @@ namespace buf.resize(retval); break; } - else if (boost::detail::winapi::GetLastError() != - boost::detail::winapi::ERROR_INSUFFICIENT_BUFFER_) + else if (boost::winapi::GetLastError() != + boost::winapi::ERROR_INSUFFICIENT_BUFFER_) { return std::string("Unknown error"); } @@ -412,9 +411,15 @@ namespace } int num_chars = (buf.size() + 1) * 2; - boost::detail::winapi::LPSTR_ narrow_buffer = - (boost::detail::winapi::LPSTR_)_alloca(num_chars); - if (boost::detail::winapi::WideCharToMultiByte(boost::detail::winapi::CP_ACP_, 0, + + boost::winapi::LPSTR_ narrow_buffer = +#if defined(__GNUC__) + (boost::winapi::LPSTR_)__builtin_alloca(num_chars); +#else + (boost::winapi::LPSTR_)_alloca(num_chars); +#endif + + if (boost::winapi::WideCharToMultiByte(boost::winapi::CP_ACP_, 0, buf.c_str(), -1, narrow_buffer, num_chars, NULL, NULL) == 0) { return std::string("Unknown error"); @@ -422,16 +427,16 @@ namespace std::string str( narrow_buffer ); #else - boost::detail::winapi::LPVOID_ lpMsgBuf = 0; - boost::detail::winapi::DWORD_ retval = boost::detail::winapi::FormatMessageA( - boost::detail::winapi::FORMAT_MESSAGE_ALLOCATE_BUFFER_ | - boost::detail::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ | - boost::detail::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_, + boost::winapi::LPVOID_ lpMsgBuf = 0; + boost::winapi::DWORD_ retval = boost::winapi::FormatMessageA( + boost::winapi::FORMAT_MESSAGE_ALLOCATE_BUFFER_ | + boost::winapi::FORMAT_MESSAGE_FROM_SYSTEM_ | + boost::winapi::FORMAT_MESSAGE_IGNORE_INSERTS_, NULL, ev, - boost::detail::winapi::MAKELANGID_(boost::detail::winapi::LANG_NEUTRAL_, - boost::detail::winapi::SUBLANG_DEFAULT_), // Default language - (boost::detail::winapi::LPSTR_) &lpMsgBuf, + boost::winapi::MAKELANGID_(boost::winapi::LANG_NEUTRAL_, + boost::winapi::SUBLANG_DEFAULT_), // Default language + (boost::winapi::LPSTR_) &lpMsgBuf, 0, NULL ); @@ -439,7 +444,7 @@ namespace if (retval == 0) return std::string("Unknown error"); - std::string str(static_cast<boost::detail::winapi::LPCSTR_>(lpMsgBuf)); + std::string str(static_cast<boost::winapi::LPCSTR_>(lpMsgBuf)); # endif while ( str.size() && (str[str.size()-1] == '\n' || str[str.size()-1] == '\r') ) @@ -453,7 +458,7 @@ namespace } // unnamed namespace -# ifndef BOOST_SYSTEM_NO_DEPRECATED +# ifdef BOOST_SYSTEM_ENABLE_DEPRECATED BOOST_SYSTEM_DECL error_code throws; // "throw on error" special error_code; // note that it doesn't matter if this // isn't initialized before use since |