shithub: choc

Download patch

ref: bfda08cf5275a70a705b3d290ca5271d40481993
parent: 074026b37ee26e78ae1c25907d2b7211b3e5fe91
author: Fabian Greffrath <fabian@greffrath.com>
date: Thu Mar 5 15:43:06 EST 2015

Initialize floor->type and floor->crush fields in EV_BuildStairs()

The floor->type and floor->crush fields of the floor thinkers added in
EV_BuildStairs() were originally left uninitialized and thus contained
random memory content.

Initialize them to make sure the floor->type field does not trigger
propagation of random content into the special and texture fields of
the adjacent sector in T_MoveFloor(). That is, make sure its value
is neither donutRaise, i.e. 11, nor lowerAndChange, i.e. 6.

Also, the chances of 32 bit of random memory being "true", i.e. 0, are
negligible.

This is functionally equivalent to what PrBoom+ is doing.

Fixes desync of mm09-512.lmp.

Fixes #368.

--- a/src/doom/p_floor.c
+++ b/src/doom/p_floor.c
@@ -493,6 +493,9 @@
 	floor->speed = speed;
 	height = sec->floorheight + stairsize;
 	floor->floordestheight = height;
+	// Initialize
+	floor->type = lowerFloor;
+	floor->crush = true;
 		
 	texture = sec->floorpic;
 	
@@ -536,6 +539,9 @@
 		floor->sector = sec;
 		floor->speed = speed;
 		floor->floordestheight = height;
+		// Initialize
+		floor->type = lowerFloor;
+		floor->crush = true;
 		ok = 1;
 		break;
 	    }