From 90de22b2a5bffababb4780fd0f186a47e8dba47b Mon Sep 17 00:00:00 2001 From: Kp Date: Sun, 14 Feb 2016 18:40:57 +0000 Subject: [PATCH] Fix invalid access reading demos Fixes: 74dfa29d318df4f3c3343021d3ad8da08f8c36b0 ("Convert most Trigger references to valptridx") --- similar/main/newdemo.cpp | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/similar/main/newdemo.cpp b/similar/main/newdemo.cpp index 2029c19fd..d0bb30434 100644 --- a/similar/main/newdemo.cpp +++ b/similar/main/newdemo.cpp @@ -2181,12 +2181,16 @@ static int newdemo_read_frame_information(int rewrite) /* Demo recording is buggy. Descent records * ND_EVENT_TRIGGER for every segment transition, even * if there is no wall. + * + * Likewise, ND_EVENT_TRIGGER can be recorded + * when the wall is valid, but there is no + * trigger on the wall. */ if (segp->sides[side].wall_num != wall_none) { #if defined(DXX_BUILD_DESCENT_II) - const auto &&t = vctrgptr(vcwallptr(segp->sides[side].wall_num)->trigger); - if (t->type == TT_SECRET_EXIT) + auto &w = *vcwallptr(segp->sides[side].wall_num); + if (w.trigger != trigger_none && vctrgptr(w.trigger)->type == TT_SECRET_EXIT) { int truth;