ref: 12b7676e7deb1e290be5128137014523227750a8
parent: a61f85c35583c5e000698a8a6591d81e7b2787b5
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;
}