Fix warnings in DirectExec crashing (#1990)

stable-8
Lukas Werling 2018-02-04 12:33:58 +01:00
parent 92a7087bf7
commit ce9245c55c
2 changed files with 15 additions and 1 deletions

View File

@ -131,7 +131,7 @@ void C4ScriptHost::Warn(const char *pMsg, ...)
void C4AulParse::Warn(C4AulWarningId warning, ...)
{
if (!pOrgScript->IsWarningEnabled(TokenSPos, warning))
if (!IsWarningEnabled(TokenSPos, warning))
return;
va_list args; va_start(args, warning);
StdStrBuf Buf = FormatStringV(C4AulWarningMessages[static_cast<size_t>(warning)], args);
@ -141,6 +141,19 @@ void C4AulParse::Warn(C4AulWarningId warning, ...)
va_end(args);
}
bool C4AulParse::IsWarningEnabled(const char *pos, C4AulWarningId warning) const
{
if (pOrgScript) return pOrgScript->IsWarningEnabled(pos, warning);
// In DirectExec, the default warnings are always active.
switch (warning)
{
#define DIAG(id, text, enabled) case C4AulWarningId::id: return enabled;
#include "C4AulWarnings.h"
#undef DIAG
default: return false;
}
}
void C4AulParse::Error(const char *pMsg, ...)
{
va_list args; va_start(args, pMsg);

View File

@ -95,6 +95,7 @@ private:
NORETURN void UnexpectedToken(const char * Expected);
void Warn(C4AulWarningId warning, ...);
bool IsWarningEnabled(const char *pos, C4AulWarningId warning) const;
void Error(const char *pMsg, ...) GNUC_FORMAT_ATTRIBUTE_O;
void AppendPosition(StdStrBuf & Buf);