From 27135d5c5da22a2027f617ba363b056af38abea4 Mon Sep 17 00:00:00 2001
From: "alexey.lysiuk" <alexey.lysiuk@gmail.com>
Date: Sun, 18 Oct 2015 16:28:42 +0300
Subject: [PATCH] Fixed crash on loading map with corrupt linedefs and/or
 sectors

See http://forum.zdoom.org/viewtopic.php?t=49276
---
 src/p_setup.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/p_setup.cpp b/src/p_setup.cpp
index 14b19348e..311bf8fc4 100644
--- a/src/p_setup.cpp
+++ b/src/p_setup.cpp
@@ -2353,7 +2353,16 @@ static void P_LoopSidedefs (bool firstloop)
 		// instead of as part of another loop
 		if (line->frontsector == line->backsector)
 		{
-			right = DWORD(line->sidedef[!sidetemp[i].b.lineside] - sides);
+			const side_t* const rightside = line->sidedef[!sidetemp[i].b.lineside];
+
+			if (NULL == rightside)
+			{
+				// There is no right side!
+				if (firstloop) Printf ("Line %d's right edge is unconnected\n", linemap[unsigned(line-lines)]);
+				continue;
+			}
+
+			right = DWORD(rightside - sides);
 		}
 		else
 		{