From 942c8a3276993e32de86d7e1cb0acffbbd987303 Mon Sep 17 00:00:00 2001
From: MaxED <j.maxed@gmail.com>
Date: Thu, 1 Oct 2015 21:35:52 +0000
Subject: [PATCH] Fixed, UDMF: we should fail map loading if there were TEXTMAP
 parsing errors. Fixed, UDMF parser: parser failed to parse decimals stored
 using scientific notation (like "1E-06"). Fixed, UDMF parser: incorrect line
 numbers were shown when displaying errors. Changed, UDMF parser: many error
 descriptions are now more detailed. Updated ZDoom ACC to Git rev. ae5f036.

---
 Build/Compilers/ZDoom/acc.exe               | Bin 66560 -> 66560 bytes
 Build/Compilers/ZDoom/zspecial.acs          |   2 +-
 Build/Configurations/Includes/UDMF_misc.cfg |   4 +-
 Source/Core/Editing/CopyPasteManager.cs     |  18 ++++++-
 Source/Core/General/MapManager.cs           |   6 +--
 Source/Core/IO/UniversalParser.cs           |  39 +++++++++-----
 Source/Core/IO/UniversalStreamReader.cs     |  54 ++++++--------------
 7 files changed, 64 insertions(+), 59 deletions(-)

diff --git a/Build/Compilers/ZDoom/acc.exe b/Build/Compilers/ZDoom/acc.exe
index af3ed0bc2c1dbbda6a5033d8bc7e1c99ec54eb98..9f7e271d47089ba363bcd8c5e95e92e1e3ec8cc5 100644
GIT binary patch
delta 26765
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
WZ|ot`qWJgPo?9iV*EOo{(EkSo)KQxN

delta 26555
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
KUe&5X(f<b@&QRt6

diff --git a/Build/Compilers/ZDoom/zspecial.acs b/Build/Compilers/ZDoom/zspecial.acs
index be67db3f6..fe1b15503 100644
--- a/Build/Compilers/ZDoom/zspecial.acs
+++ b/Build/Compilers/ZDoom/zspecial.acs
@@ -335,7 +335,7 @@ special
 	-89:ChangeActorRoll(2,3),
 	-90:GetActorRoll(1),
 	-91:QuakeEx(8,12),
-	-92:Warp(6,8),
+	-92:Warp(6,9),
 
 	// Zandronum's
 	-100:ResetMap(0),
diff --git a/Build/Configurations/Includes/UDMF_misc.cfg b/Build/Configurations/Includes/UDMF_misc.cfg
index 08db80a35..22c194093 100644
--- a/Build/Configurations/Includes/UDMF_misc.cfg
+++ b/Build/Configurations/Includes/UDMF_misc.cfg
@@ -122,9 +122,9 @@ sidedefflags
 {
 	clipmidtex = "Clip middle texture";
 	wrapmidtex = "Wrap middle texture";
-	nofakecontrast = "No fake contrast";
-	nodecals = "No decals";
 	smoothlighting = "Smooth lighting";
+	nofakecontrast = "Even lighting";
+	nodecals = "No decals";
 	lightfog = "Use sidedef brightness on fogged walls";
 }
 
diff --git a/Source/Core/Editing/CopyPasteManager.cs b/Source/Core/Editing/CopyPasteManager.cs
index 96cb46e36..f03d2ce15 100644
--- a/Source/Core/Editing/CopyPasteManager.cs
+++ b/Source/Core/Editing/CopyPasteManager.cs
@@ -184,8 +184,22 @@ namespace CodeImp.DoomBuilder.Editing
 			UniversalStreamReader reader = new UniversalStreamReader(General.Map.FormatInterface.UIFields); //mxd
 			reader.StrictChecking = false;
 			General.Map.Map.BeginAddRemove();
-			reader.Read(General.Map.Map, memstream);
-			General.Map.Map.EndAddRemove();
+
+			//mxd. UniversalStreamReader can now throw errors
+			try
+			{
+				reader.Read(General.Map.Map, memstream);
+			}
+			catch(Exception e)
+			{
+				General.ErrorLogger.Add(ErrorType.Error, "Unable to load prefab. " + e.GetType().Name + ": " + e.Message);
+				General.ShowErrorMessage("Unable to load prefab." + Environment.NewLine + Environment.NewLine + e.Message, MessageBoxButtons.OK);
+				return;
+			}
+			finally
+			{
+				General.Map.Map.EndAddRemove();
+			}
 			
 			// The new geometry is not marked, so invert the marks to get it marked
 			General.Map.Map.InvertAllMarks();
diff --git a/Source/Core/General/MapManager.cs b/Source/Core/General/MapManager.cs
index 44a7e8836..c8ad6fb21 100644
--- a/Source/Core/General/MapManager.cs
+++ b/Source/Core/General/MapManager.cs
@@ -595,14 +595,14 @@ namespace CodeImp.DoomBuilder
 				newmap.BeginAddRemove();
 				General.WriteLogLine("Initializing map format interface " + config.FormatInterface + "...");
 				io = MapSetIO.Create(config.FormatInterface, tempwad, this);
-				General.WriteLogLine("Reading map data structures from file...");
+				General.WriteLogLine("Reading map data from file...");
 #if DEBUG
 				newmap = io.Read(newmap, TEMP_MAP_HEADER);
 #else
 				try { newmap = io.Read(newmap, TEMP_MAP_HEADER); } catch(Exception e) 
 				{
-					General.ErrorLogger.Add(ErrorType.Error, "Unable to read the map data structures with the specified configuration. " + e.GetType().Name + ": " + e.Message);
-					General.ShowErrorMessage("Unable to read the map data structures with the specified configuration.", MessageBoxButtons.OK);
+					General.ErrorLogger.Add(ErrorType.Error, "Unable to read the map data with the specified configuration. " + e.GetType().Name + ": " + e.Message);
+					General.ShowErrorMessage("Unable to read the map data with the specified configuration." + Environment.NewLine + Environment.NewLine + e.Message, MessageBoxButtons.OK);
 					return false;
 				}
 #endif
diff --git a/Source/Core/IO/UniversalParser.cs b/Source/Core/IO/UniversalParser.cs
index 266d5cf6a..791a8686d 100644
--- a/Source/Core/IO/UniversalParser.cs
+++ b/Source/Core/IO/UniversalParser.cs
@@ -21,6 +21,7 @@ using System.IO;
 using System.Text;
 using System.Globalization;
 using System.Collections.Generic;
+using CodeImp.DoomBuilder.Map;
 
 #endregion
 
@@ -31,10 +32,10 @@ namespace CodeImp.DoomBuilder.IO
 		#region ================== Constants
 		
 		// Path seperator
-		public const string DEFAULT_SEPERATOR = ".";
+		//public const string DEFAULT_SEPERATOR = ".";
 		
 		// Allowed characters in a key
-		public const string KEY_CHARACTERS = "abcdefghijklmnopqrstuvwxyz0123456789_";
+		private const string KEY_CHARACTERS = "abcdefghijklmnopqrstuvwxyz0123456789_";
 		
 		// Parse mode constants
 		private const int PM_NOTHING = 0;
@@ -185,7 +186,7 @@ namespace CodeImp.DoomBuilder.IO
 			// Go through all of the data until
 			// the end or until the struct closes
 			// or when an arror occurred
-			while ((cpErrorResult == 0) && (endofstruct == false))
+			while((cpErrorResult == 0) && (endofstruct == false))
 			{
 				// Get current character
 				if(line == data.Length - 1) break;
@@ -193,6 +194,7 @@ namespace CodeImp.DoomBuilder.IO
 				{
 					pos = 0;
 					line++;
+					if(string.IsNullOrEmpty(data[line])) continue; //mxd. Skip empty lines here so correct line number is displayed on errors
 				}
 
 				c = data[line][pos];
@@ -283,7 +285,7 @@ namespace CodeImp.DoomBuilder.IO
 							{
 								// Block comment closes on the same line?.. (mxd)
 								int np = data[line].IndexOf("*/", pos);
-								if (np > -1)
+								if(np > -1)
 								{
 									pos = np + 1;
 								}
@@ -310,7 +312,7 @@ namespace CodeImp.DoomBuilder.IO
 							break;
 							
 						default: // Everything else
-							if (!topLevel && pos == 0) 
+							if(!topLevel && pos == 0) 
 							{
 								while(matches.ContainsKey(data[line])) 
 								{
@@ -415,17 +417,18 @@ namespace CodeImp.DoomBuilder.IO
 								catch(FormatException)
 								{
 									// ERROR: Invalid value in assignment
-									RaiseError(line, ERROR_VALUEINVALID);
+									RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + s.Trim() + "'");
 								}
 							}
 							catch(FormatException)
 							{
 								// ERROR: Invalid value in assignment
-								RaiseError(line, ERROR_VALUEINVALID);
+								RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + s.Trim() + "'");
 							}
 						}
 						// Floating point?
-						else if(s.IndexOf('.') > -1)
+						//mxd. Can be in scientific notation (like "1E-06")
+						else if(s.IndexOf('.') > -1 || s.ToLowerInvariant().Contains("e-"))
 						{
 							float fval = 0;
 							
@@ -434,7 +437,7 @@ namespace CodeImp.DoomBuilder.IO
 							catch(FormatException)
 							{ 
 								// ERROR: Invalid value in assignment
-								RaiseError(line, ERROR_VALUEINVALID);
+								RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + s.Trim() + "'");
 							}
 							
 							// Add it to struct
@@ -476,13 +479,13 @@ namespace CodeImp.DoomBuilder.IO
 								catch(FormatException)
 								{ 
 									// ERROR: Invalid value in assignment
-									RaiseError(line, ERROR_VALUEINVALID);
+									RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + s.Trim() + "'");
 								}
 							}
 							catch(FormatException)
 							{ 
 								// ERROR: Invalid value in assignment
-								RaiseError(line, ERROR_VALUEINVALID);
+								RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + s.Trim() + "'");
 							}
 						}
 						
@@ -533,7 +536,7 @@ namespace CodeImp.DoomBuilder.IO
 									catch(FormatException)
 									{ 
 										// ERROR: Invalid value in assignment
-										RaiseError(line, ERROR_VALUEINVALID);
+										RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + v.Trim() + "'");
 									}
 									
 									// Convert the number to a char
@@ -541,7 +544,7 @@ namespace CodeImp.DoomBuilder.IO
 									catch(FormatException)
 									{ 
 										// ERROR: Invalid value in assignment
-										RaiseError(line, ERROR_VALUEINVALID);
+										RaiseError(line, ERROR_VALUEINVALID + "\n\nUnrecognized token: '" + v.Trim() + "'");
 									}
 									
 									// Add the char
@@ -623,7 +626,7 @@ namespace CodeImp.DoomBuilder.IO
 								
 							default:
 								// Unknown keyword
-								RaiseError(line, ERROR_KEYWORDUNKNOWN + "\nUnrecognized token: '" + val.ToString().Trim().ToLowerInvariant() + "'");
+								RaiseError(line, ERROR_KEYWORDUNKNOWN + "\n\nUnrecognized token: '" + val.ToString().Trim() + "'");
 								break;
 						}
 						
@@ -711,6 +714,14 @@ namespace CodeImp.DoomBuilder.IO
 						db.Append(leveltabs); db.Append(cs[i].Key); db.Append(spacing); db.Append("=");
 						db.Append(spacing); db.Append(f.ToString("0.000", CultureInfo.InvariantCulture)); db.Append(";"); db.Append(newline);
 					}
+					//mxd. Check if value is of double type
+					else if(cs[i].Value is double)
+					{
+						// Output the value as double (7 decimals)
+						double d = (double)cs[i].Value;
+						db.Append(leveltabs); db.Append(cs[i].Key); db.Append(spacing); db.Append("=");
+						db.Append(spacing); db.Append(d.ToString("0.0000000", CultureInfo.InvariantCulture)); db.Append(";"); db.Append(newline);
+					}
 					// Check if value is of other numeric type
 					else if(cs[i].Value.GetType().IsPrimitive)
 					{
diff --git a/Source/Core/IO/UniversalStreamReader.cs b/Source/Core/IO/UniversalStreamReader.cs
index 786a6dab0..3eb2df981 100644
--- a/Source/Core/IO/UniversalStreamReader.cs
+++ b/Source/Core/IO/UniversalStreamReader.cs
@@ -22,7 +22,6 @@ using System.Text;
 using System.IO;
 using CodeImp.DoomBuilder.Map;
 using CodeImp.DoomBuilder.Geometry;
-using System.Windows.Forms;
 using CodeImp.DoomBuilder.Config;
 using CodeImp.DoomBuilder.Types;
 
@@ -41,10 +40,10 @@ namespace CodeImp.DoomBuilder.IO
 
 		#region ================== Variables
 
-		private Configuration config;
+		private readonly Configuration config;
 		private bool setknowncustomtypes;
 		private bool strictchecking = true;
-		private Dictionary<string, Dictionary<string, UniversalType>> uifields; //mxd
+		private readonly Dictionary<string, Dictionary<string, UniversalType>> uifields; //mxd
 		
 		#endregion
 
@@ -130,50 +129,31 @@ namespace CodeImp.DoomBuilder.IO
 		#region ================== Reading
 
 		// This reads from a stream
-		public MapSet Read(MapSet map, Stream stream)
+		public void Read(MapSet map, Stream stream)
 		{
 			StreamReader reader = new StreamReader(stream, Encoding.ASCII);
 			UniversalParser textmap = new UniversalParser();
 			textmap.StrictChecking = strictchecking;
 			
-#if !DEBUG
-			try
-			{
-#endif
-				// Read UDMF from stream
-				List<string> data = new List<string>(100);
-				while(!reader.EndOfStream) 
-				{
-					string line = reader.ReadLine();
-					if(string.IsNullOrEmpty(line)) continue;
-					data.Add(line);
-				}
+			// Read UDMF from stream
+			List<string> data = new List<string>(1000);
+			while(!reader.EndOfStream) data.Add(reader.ReadLine());
 
-				textmap.InputConfiguration(data.ToArray());
+			// Parse it
+			textmap.InputConfiguration(data.ToArray());
 
-				// Check for errors
-				if(textmap.ErrorResult != 0)
-				{
-					// Show parse error
-					General.ShowErrorMessage("Error on line " + textmap.ErrorLine + " while parsing UDMF map data:\n" + textmap.ErrorDescription, MessageBoxButtons.OK);
-				}
-				else
-				{
-					// Read the map
-					Dictionary<int, Vertex> vertexlink = ReadVertices(map, textmap);
-					Dictionary<int, Sector> sectorlink = ReadSectors(map, textmap);
-					ReadLinedefs(map, textmap, vertexlink, sectorlink);
-					ReadThings(map, textmap);
-				}
-#if !DEBUG
-			}
-			catch(Exception e)
+			// Check for errors
+			if(textmap.ErrorResult != 0)
 			{
-				General.ShowErrorMessage("Unexpected error reading UDMF map data. " + e.GetType().Name + ": " + e.Message, MessageBoxButtons.OK);
+				//mxd. Throw parse error
+				throw new Exception("Error on line " + textmap.ErrorLine + " while parsing UDMF map data:\n" + textmap.ErrorDescription);
 			}
-#endif
 
-			return map;
+			// Read the map
+			Dictionary<int, Vertex> vertexlink = ReadVertices(map, textmap);
+			Dictionary<int, Sector> sectorlink = ReadSectors(map, textmap);
+			ReadLinedefs(map, textmap, vertexlink, sectorlink);
+			ReadThings(map, textmap);
 		}
 
 		// This reads the things
-- 
GitLab