forked from Mirrors/openclonk
Fix warnings in DirectExec crashing (#1990)
parent
92a7087bf7
commit
ce9245c55c
|
@ -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);
|
||||
|
|
|
@ -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);
|
||||
|
||||
|
|
Loading…
Reference in New Issue