From 48dcbabd60bcf09d20b4e8f8903b392601eb5a79 Mon Sep 17 00:00:00 2001 From: Randy Heit Date: Fri, 5 Feb 2016 22:16:56 -0600 Subject: [PATCH] Emit a message when trying to use something non-integral as a boolean - It's not exactly optimal, since it silently removes the offending expression, but it's better than crashing. --- src/thingdef/thingdef_expression.cpp | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/src/thingdef/thingdef_expression.cpp b/src/thingdef/thingdef_expression.cpp index 19c02837c..fd3df005c 100644 --- a/src/thingdef/thingdef_expression.cpp +++ b/src/thingdef/thingdef_expression.cpp @@ -143,11 +143,13 @@ FxExpression *FxExpression::Resolve(FCompileContext &ctx) FxExpression *FxExpression::ResolveAsBoolean(FCompileContext &ctx) { + ///FIXME: Use an actual boolean type FxExpression *x = Resolve(ctx); if (x != NULL) { switch (x->ValueType.Type) { + case VAL_Int: case VAL_Sound: case VAL_Color: case VAL_Name: @@ -155,6 +157,9 @@ FxExpression *FxExpression::ResolveAsBoolean(FCompileContext &ctx) break; default: + ScriptPosition.Message(MSG_ERROR, "Not an integral type"); + delete this; + return NULL; break; } }