From 2bb16c684fb1b165996ff6cf4c93fcf80f4842a4 Mon Sep 17 00:00:00 2001 From: "alexey.lysiuk" Date: Mon, 24 Apr 2017 15:57:30 +0300 Subject: [PATCH] Fixed crash caused by 0-length lines in UDMF When line was removed during processing bogus entries remained in sidedefs array --- src/p_udmf.cpp | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/src/p_udmf.cpp b/src/p_udmf.cpp index 81b1d0a90..7952d2a92 100644 --- a/src/p_udmf.cpp +++ b/src/p_udmf.cpp @@ -1934,10 +1934,17 @@ public: P_AdjustLine(&lines[line]); P_FinishLoadingLineDef(&lines[line], tempalpha[0]); } - assert((unsigned)side <= level.sides.Size()); - if ((unsigned)side > level.sides.Size()) + + const int sideDelta = level.sides.Size() - side; + assert(sideDelta >= 0); + + if (sideDelta < 0) { - Printf("Map had %d invalid side references\n", (int)level.sides.Size() - side); + Printf("Map had %d invalid side references\n", abs(sideDelta)); + } + else if (sideDelta > 0) + { + level.sides.Resize(side); } }