From e56fef0a8e0a7773231d4d241db71ff273a1b6e6 Mon Sep 17 00:00:00 2001
From: Christoph Oelckers <coelckers@zdoom.fake>
Date: Sat, 8 Nov 2008 08:29:51 +0000
Subject: [PATCH] - Fixed: The TEXTURES parser didn't report an error for
 invalid keywords. - Fixed: The DECORATE expression evaluator was too strict
 with missing jump labels.   For compatibility it only may print a warning,
 not an error.

SVN r1284 (trunk)
---
 docs/rh-log.txt                      | 5 +++++
 src/textures/texturemanager.cpp      | 4 ++++
 src/thingdef/thingdef_expression.cpp | 8 ++++++--
 3 files changed, 15 insertions(+), 2 deletions(-)

diff --git a/docs/rh-log.txt b/docs/rh-log.txt
index 25f7c51d8..c35c4ec64 100644
--- a/docs/rh-log.txt
+++ b/docs/rh-log.txt
@@ -1,3 +1,8 @@
+November 2, 2008  (Changes by Graf Zahl)
+- Fixed: The TEXTURES parser didn't report an error for invalid keywords.
+- Fixed: The DECORATE expression evaluator was too strict with missing jump labels.
+  For compatibility it only may print a warning, not an error.
+
 October 29, 2008  (Changes by Graf Zahl)
 - Fixed: FxClassTypeCast::Resolve didn't work for NULL classes because a variable
   was not initialized.
diff --git a/src/textures/texturemanager.cpp b/src/textures/texturemanager.cpp
index 1c40c60e6..44ccbe67f 100644
--- a/src/textures/texturemanager.cpp
+++ b/src/textures/texturemanager.cpp
@@ -596,6 +596,10 @@ void FTextureManager::LoadTextureDefs(int wadnum, const char *lumpname)
 				{
 					ParseXTexture(sc, FTexture::TEX_MiscPatch);
 				}
+				else
+				{
+					sc.ScriptError("Texture definition expected, found '%s'", sc.String);
+				}
 			}
 		}
 	}
diff --git a/src/thingdef/thingdef_expression.cpp b/src/thingdef/thingdef_expression.cpp
index 1f345f264..a3cdee5b5 100644
--- a/src/thingdef/thingdef_expression.cpp
+++ b/src/thingdef/thingdef_expression.cpp
@@ -2634,8 +2634,12 @@ FxExpression *FxMultiNameState::Resolve(FCompileContext &ctx)
 		if (destination == NULL)
 		{
 			ScriptPosition.Message(ctx.lax? MSG_WARNING:MSG_ERROR, "Unknown state jump destination");
-			delete this;
-			return NULL;
+			if (!ctx.lax)
+			{
+				delete this;
+				return NULL;
+			}
+			return this;
 		}
 		FxExpression *x = new FxConstant(destination, ScriptPosition);
 		delete this;