From d9a641c6005d9fa30e4a59f51d699d6a8f70c9e9 Mon Sep 17 00:00:00 2001 From: Bill Currie Date: Sat, 3 Dec 2011 09:06:57 +0900 Subject: [PATCH] Avoid a segfault when the hull hasn't been portalized. Serves me right for forgetting to test the main engine :P --- libs/models/trace.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/libs/models/trace.c b/libs/models/trace.c index e1328e4e4..23b81696d 100644 --- a/libs/models/trace.c +++ b/libs/models/trace.c @@ -592,7 +592,8 @@ MOD_TraceLine (hull_t *hull, int num, split_plane = tstack->plane; moved = tstack->start_frac > 0; - leaf = hull->nodeleafs[tstack->num].leafs[side ^ 1]; + if (hull->nodeleafs) + leaf = hull->nodeleafs[tstack->num].leafs[side ^ 1]; num = hull->clipnodes[tstack->num].children[side ^ 1]; } @@ -606,7 +607,8 @@ MOD_TraceLine (hull_t *hull, int num, if (start_dist >= offset && end_dist >= offset) { // entirely in front of the plane plane = 0; - leaf = hull->nodeleafs[num].leafs[0]; + if (hull->nodeleafs) + leaf = hull->nodeleafs[num].leafs[0]; num = node->children[0]; continue; } @@ -617,7 +619,8 @@ MOD_TraceLine (hull_t *hull, int num, || (!offset && start_dist < -offset && end_dist < -offset)) { // entirely behind the plane plane = 0; - leaf = hull->nodeleafs[num].leafs[1]; + if (hull->nodeleafs) + leaf = hull->nodeleafs[num].leafs[1]; num = node->children[1]; continue; } @@ -657,7 +660,8 @@ MOD_TraceLine (hull_t *hull, int num, VectorMultAdd (start, frac[side], dist, end); - leaf = hull->nodeleafs[num].leafs[side]; + if (hull->nodeleafs) + leaf = hull->nodeleafs[num].leafs[side]; num = node->children[side]; } }