MAINT-2740 and MAINT-2672 rework after code review for 2740 fix and include 2672 fix needed for doing local integ tests
parent
97a2171ea8
commit
2750e86beb
|
|
@ -201,7 +201,7 @@ namespace {
|
|||
virtual void recordMessage(LLError::ELevel level,
|
||||
const std::string& message)
|
||||
{
|
||||
LL_WINDOWS_OUTPUT_DEBUG(wstring_to_utf16str(utf8str_to_wstring(message)));
|
||||
LL_WINDOWS_OUTPUT_DEBUG(wstring_to_utf16str(utf8str_to_wstring(message)).c_str());
|
||||
}
|
||||
};
|
||||
#endif
|
||||
|
|
@ -1398,5 +1398,19 @@ namespace LLError
|
|||
{
|
||||
sIndex = 0 ;
|
||||
}
|
||||
|
||||
#if LL_WINDOWS && !defined(LL_RELEASE_FOR_DOWNLOAD)
|
||||
void LLOutputDebugUTF16(const unsigned short* s)
|
||||
{
|
||||
// Be careful not to enable this in non-debug builds as there are bad interactions between the
|
||||
// exceptions thrown by this function and the handling of stacks in coroutine fibers. BUG-2707
|
||||
//
|
||||
#if defined(_DEBUG)
|
||||
OutputDebugString(s);
|
||||
OutputDebugString(TEXT("\n"));
|
||||
#endif
|
||||
}
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -34,7 +34,6 @@
|
|||
#include "llerrorlegacy.h"
|
||||
#include "stdtypes.h"
|
||||
|
||||
|
||||
/** Error Logging Facility
|
||||
|
||||
Information for most users:
|
||||
|
|
@ -199,8 +198,22 @@ namespace LLError
|
|||
static void clear() ;
|
||||
static void end(std::ostringstream* _out) ;
|
||||
};
|
||||
|
||||
#if LL_WINDOWS && !defined(LL_RELEASE_FOR_DOWNLOAD)
|
||||
void LLOutputDebugUTF16(const unsigned short* s);
|
||||
#endif
|
||||
|
||||
}
|
||||
|
||||
#if LL_WINDOWS && !defined(LL_RELEASE_FOR_DOWNLOAD)
|
||||
// Macro accepting a wchar_t* for display in windows debugging console in debug builds only
|
||||
// (wchar_t flavor chosen for maximal utility with unicode text debugging)
|
||||
//
|
||||
#define LL_WINDOWS_OUTPUT_DEBUG(a) LLError::LLOutputDebugUTF16((a))
|
||||
#else
|
||||
#define LL_WINDOWS_OUTPUT_DEBUG(a)
|
||||
#endif
|
||||
|
||||
//this is cheaper than llcallstacks if no need to output other variables to call stacks.
|
||||
#define llpushcallstacks LLError::LLCallStacks::push(__FUNCTION__, __LINE__)
|
||||
#define llcallstacks \
|
||||
|
|
@ -283,20 +296,6 @@ 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:
|
||||
|
|
|
|||
|
|
@ -1385,7 +1385,7 @@ public:
|
|||
return false;
|
||||
}
|
||||
// Congratulations, we've hit a new low. :-P
|
||||
#if _DEBUG
|
||||
|
||||
LL_INFOS("FrameWatcher") << ' ';
|
||||
if (! prevSize)
|
||||
{
|
||||
|
|
@ -1398,9 +1398,6 @@ public:
|
|||
}
|
||||
LL_CONT << std::fixed << std::setprecision(1) << framerate << '\n'
|
||||
<< LLMemoryInfo() << LL_ENDL;
|
||||
#else
|
||||
(void)prevSize;
|
||||
#endif
|
||||
|
||||
return false;
|
||||
}
|
||||
|
|
|
|||
|
|
@ -1310,8 +1310,7 @@ void LLXUIParser::parserWarning(const std::string& message)
|
|||
{
|
||||
#ifdef LL_WINDOWS
|
||||
// use Visual Studo friendly formatting of output message for easy access to originating xml
|
||||
llutf16string utf16str = utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), mCurReadNode->getLineNumber(), message.c_str()).c_str());
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf16str);
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), mCurReadNode->getLineNumber(), message.c_str())));
|
||||
#else
|
||||
Parser::parserWarning(message);
|
||||
#endif
|
||||
|
|
@ -1320,8 +1319,7 @@ void LLXUIParser::parserWarning(const std::string& message)
|
|||
void LLXUIParser::parserError(const std::string& message)
|
||||
{
|
||||
#ifdef LL_WINDOWS
|
||||
llutf16string utf16str = utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), mCurReadNode->getLineNumber(), message.c_str()).c_str());
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf16str);
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), mCurReadNode->getLineNumber(), message.c_str())));
|
||||
#else
|
||||
Parser::parserError(message);
|
||||
#endif
|
||||
|
|
@ -1639,8 +1637,7 @@ void LLSimpleXUIParser::parserWarning(const std::string& message)
|
|||
{
|
||||
#ifdef LL_WINDOWS
|
||||
// use Visual Studo friendly formatting of output message for easy access to originating xml
|
||||
llutf16string utf16str = utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), LINE_NUMBER_HERE, message.c_str()).c_str());
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf16str);
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), LINE_NUMBER_HERE, message.c_str())));
|
||||
#else
|
||||
Parser::parserWarning(message);
|
||||
#endif
|
||||
|
|
@ -1649,8 +1646,7 @@ void LLSimpleXUIParser::parserWarning(const std::string& message)
|
|||
void LLSimpleXUIParser::parserError(const std::string& message)
|
||||
{
|
||||
#ifdef LL_WINDOWS
|
||||
llutf16string utf16str = utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), LINE_NUMBER_HERE, message.c_str()).c_str());
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf16str);
|
||||
LL_WINDOWS_OUTPUT_DEBUG(utf8str_to_utf16str(llformat("%s(%d):\t%s", mCurFileName.c_str(), LINE_NUMBER_HERE, message.c_str())));
|
||||
#else
|
||||
Parser::parserError(message);
|
||||
#endif
|
||||
|
|
|
|||
|
|
@ -79,11 +79,9 @@ void parse_string();
|
|||
#define yyfree indra_free
|
||||
|
||||
|
||||
#if defined(__cplusplus)
|
||||
extern "C" { int yylex( void ); }
|
||||
extern "C" { int yyparse( void ); }
|
||||
extern "C" { int yyerror(const char *fmt, ...); }
|
||||
#endif
|
||||
int yylex( void );
|
||||
int yyparse( void );
|
||||
int yyerror(const char *fmt, ...);
|
||||
|
||||
%}
|
||||
|
||||
|
|
|
|||
|
|
@ -2,10 +2,6 @@
|
|||
#include "linden_common.h"
|
||||
#include "lscript_tree.h"
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
int yylex(void);
|
||||
int yyparse( void );
|
||||
int yyerror(const char *fmt, ...);
|
||||
|
|
@ -20,9 +16,6 @@
|
|||
#pragma warning( disable : 4065 ) // warning: switch statement contains 'default' but no 'case' labels
|
||||
#endif
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
%}
|
||||
|
||||
%union
|
||||
|
|
|
|||
Loading…
Reference in New Issue