- fixed: CVar.ResetToDefault was missing a check for use outside of menus.

This commit is contained in:
Christoph Oelckers 2018-11-17 15:23:57 +01:00
parent cfa11046ab
commit bb4007f16a

View file

@ -225,7 +225,7 @@ DEFINE_ACTION_FUNCTION(_CVar, SetInt)
// Only menus are allowed to change non-mod CVARs. // Only menus are allowed to change non-mod CVARs.
if (DMenu::InMenu == 0) if (DMenu::InMenu == 0)
{ {
I_FatalError("Attempt to change CVAR '%s' outside of menu code", self->GetName()); ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName());
} }
} }
PARAM_INT(val); PARAM_INT(val);
@ -243,7 +243,7 @@ DEFINE_ACTION_FUNCTION(_CVar, SetFloat)
// Only menus are allowed to change non-mod CVARs. // Only menus are allowed to change non-mod CVARs.
if (DMenu::InMenu == 0) if (DMenu::InMenu == 0)
{ {
I_FatalError("Attempt to change CVAR '%s' outside of menu code", self->GetName()); ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName());
} }
} }
PARAM_FLOAT(val); PARAM_FLOAT(val);
@ -262,7 +262,7 @@ DEFINE_ACTION_FUNCTION(_CVar, SetString)
// Only menus are allowed to change non-mod CVARs. // Only menus are allowed to change non-mod CVARs.
if (DMenu::InMenu == 0) if (DMenu::InMenu == 0)
{ {
I_FatalError("Attempt to change CVAR '%s' outside of menu code", self->GetName()); ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName());
} }
} }
PARAM_STRING(val); PARAM_STRING(val);
@ -1161,6 +1161,15 @@ void FBaseCVar::ResetToDefault ()
DEFINE_ACTION_FUNCTION(_CVar, ResetToDefault) DEFINE_ACTION_FUNCTION(_CVar, ResetToDefault)
{ {
PARAM_SELF_STRUCT_PROLOGUE(FBaseCVar); PARAM_SELF_STRUCT_PROLOGUE(FBaseCVar);
if (!(self->GetFlags() & CVAR_MOD))
{
// Only menus are allowed to change non-mod CVARs.
if (DMenu::InMenu == 0)
{
ThrowAbortException(X_OTHER, "Attempt to change CVAR '%s' outside of menu code", self->GetName());
}
}
self->ResetToDefault(); self->ResetToDefault();
return 0; return 0;
} }