From 4568bbae11d891830378af49ed0fa9b29f740a39 Mon Sep 17 00:00:00 2001 From: Chris Taylor Date: Sat, 12 Nov 2016 16:41:54 +0800 Subject: [PATCH] Don't crash when building segment bridge in editor the wrong way Check if there is Markedsegp and replacing an Assert with a LevelError. --- similar/editor/kbuild.cpp | 5 +++++ similar/main/gameseg.cpp | 3 ++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/similar/editor/kbuild.cpp b/similar/editor/kbuild.cpp index 17d4019cc..51da3a441 100644 --- a/similar/editor/kbuild.cpp +++ b/similar/editor/kbuild.cpp @@ -35,6 +35,11 @@ COPYRIGHT 1993-1998 PARALLAX SOFTWARE CORPORATION. ALL RIGHTS RESERVED. // ---------- Create a bridge segment between current segment/side and marked segment/side ---------- int CreateBridge() { + if (!Markedsegp) { + editor_status("No marked side."); + return 0; + } + if (!med_form_bridge_segment(Cursegp,Curside,Markedsegp,Markedside)) { Update_flags |= UF_WORLD_CHANGED; mine_changed = 1; diff --git a/similar/main/gameseg.cpp b/similar/main/gameseg.cpp index 619938717..d8d20de58 100644 --- a/similar/main/gameseg.cpp +++ b/similar/main/gameseg.cpp @@ -1277,7 +1277,8 @@ static void get_verts_for_normal(int va, int vb, int vc, int vd, int *v0, int *v swap(w[j], w[i]); } - Assert((v[0] < v[1]) && (v[1] < v[2]) && (v[2] < v[3])); + if (!((v[0] < v[1]) && (v[1] < v[2]) && (v[2] < v[3]))) + LevelError("Level contains malformed geometry."); // Now, if for any w[i] & w[i+1]: w[i+1] = (w[i]+3)%4, then must swap *v0 = v[0];