From 3a4876704a75922bffe091cf1f88d28614c29420 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Wed, 24 Jul 2013 13:11:50 +0000
Subject: [PATCH] ModelReader: fixed a crash when trying to load a model
 without extension.

---
 Source/Core/GZBuilder/Data/TextureData.cs         |  2 +-
 Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs | 12 ++++++++----
 Source/Core/GZBuilder/md3/ModelReader.cs          |  2 +-
 3 files changed, 10 insertions(+), 6 deletions(-)

diff --git a/Source/Core/GZBuilder/Data/TextureData.cs b/Source/Core/GZBuilder/Data/TextureData.cs
index ed14da536..035e48a24 100644
--- a/Source/Core/GZBuilder/Data/TextureData.cs
+++ b/Source/Core/GZBuilder/Data/TextureData.cs
@@ -1,6 +1,6 @@
 namespace CodeImp.DoomBuilder.GZBuilder.Data {
     public struct TextureData {
-        public const string INVALID_TEXTURE = "**INVALID_TEXTURE**";
+		public const string INVALID_TEXTURE = "**invalid_texture**";
         public static string[] SUPPORTED_TEXTURE_EXTENSIONS = { ".jpg", ".tga", ".png", ".dds", ".pcx" };
     }
 }
diff --git a/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs b/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs
index e56f2dcb0..c56fb3216 100644
--- a/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs
+++ b/Source/Core/GZBuilder/GZDoom/ModeldefStructure.cs
@@ -67,10 +67,14 @@ namespace CodeImp.DoomBuilder.GZBuilder.GZDoom {
                             break;
                         } else {
                             //check extension
-                            int dotPos = token.LastIndexOf(".");
-                            string fileExt = token.Substring(token.LastIndexOf("."), token.Length - dotPos);
-                            if (fileExt != ".md3" && fileExt != ".md2") {
-                                General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": model '" + token + "' not parsed. Only MD3 and MD2 models are supported.");
+	                        string fileExt = Path.GetExtension(token);
+	                        if (string.IsNullOrEmpty(fileExt)){
+								General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": model '" + token + "' won't be loaded. Models without extension are not supported by GZDoom.");
+								gotErrors = true;
+								break;
+	                        }
+							if(fileExt != ".md3" && fileExt != ".md2") {
+                                General.ErrorLogger.Add(ErrorType.Error, "Error in " + parser.Source + " at line " + parser.GetCurrentLineNumber() + ": model '" + token + "' won't be loaded. Only MD2 and MD3 models are supported.");
                                 gotErrors = true;
                                 break;
                             }
diff --git a/Source/Core/GZBuilder/md3/ModelReader.cs b/Source/Core/GZBuilder/md3/ModelReader.cs
index 7a8548437..8ec553dc1 100644
--- a/Source/Core/GZBuilder/md3/ModelReader.cs
+++ b/Source/Core/GZBuilder/md3/ModelReader.cs
@@ -125,7 +125,7 @@ namespace CodeImp.DoomBuilder.GZBuilder.MD3
 					//report errors
 					if(errors.Count > 0) {
 						foreach(string e in errors)
-							General.ErrorLogger.Add(ErrorType.Error, "ModelLoader: error while loading '" + mde.ModelNames[i] + "':" + e);
+							General.ErrorLogger.Add(ErrorType.Error, "ModelLoader: error while loading '" + mde.ModelNames[i] + "': " + e);
 					}
 				}
 			}
-- 
GitLab