diff options
author | Graham Madarasz <graham@lindenlab.com> | 2013-06-04 09:05:23 -0700 |
---|---|---|
committer | Graham Madarasz <graham@lindenlab.com> | 2013-06-04 09:05:23 -0700 |
commit | 97a2171ea88fe52060e1dfe3fb09d2c320e1bb10 (patch) | |
tree | dee5f9cc8e653e731af5df4639083c88bdb4c730 /indra/llcommon/llerror.h | |
parent | dcfb18373eca7986a73d8b9a1d34970cc0a23ed9 (diff) |
MAINT-2740 make use of OsOutputDebugString _DEBUG only to avoid interactions between Win 32-bit SEH and boost coroutine fiber stack handling
Diffstat (limited to 'indra/llcommon/llerror.h')
-rwxr-xr-x | indra/llcommon/llerror.h | 14 |
1 files changed, 14 insertions, 0 deletions
diff --git a/indra/llcommon/llerror.h b/indra/llcommon/llerror.h index b65b410153..08a5cd26df 100755 --- a/indra/llcommon/llerror.h +++ b/indra/llcommon/llerror.h @@ -283,6 +283,20 @@ typedef LLError::NoClassInfo _LL_CLASS_TO_LOG; #define LL_ENDL llendl #define LL_CONT (*_out) +// Short story: We don't want to enable this in release builds. +// +// Long story: ...because this call generates C++ exceptions +// which are handled and fine under the debugger, but instant death should they occur from +// within a coroutine's stackframe due to inherent limitations of Windows 32-bit SEH +// interacting with the fiber-based coroutine support used by boost. +// +// gmad BUG-2707/MAINT-2740 +#if LL_WINDOWS && defined(_DEBUG) + #define LL_WINDOWS_OUTPUT_DEBUG(a) OutputDebugString(utf8str_to_utf16str(a).c_str()), OutputDebugString("\n") +#else + #define LL_WINDOWS_OUTPUT_DEBUG(a) +#endif + /* Use this construct if you need to do computation in the middle of a message: |