by Graf Zahl » Sun Aug 26, 2018 12:00 am
The difference is, now player_t explicitly initializes its settings_controller member variable, the old implementation did not. Apparently there are some dirty side effects at work here which depend on the value not getting cleared on a player reset. A player reset has always been supposed to be complete, so I had changed the inline initialization to set all fields, including the ones that were left in the old version. In this case it apparently just hid a bug in the implementation that, from the looks of it, does not properly set up this thing when a player gets reset.
The difference is, now player_t explicitly initializes its settings_controller member variable, the old implementation did not. Apparently there are some dirty side effects at work here which depend on the value not getting cleared on a player reset. A player reset has always been supposed to be complete, so I had changed the inline initialization to set all fields, including the ones that were left in the old version. In this case it apparently just hid a bug in the implementation that, from the looks of it, does not properly set up this thing when a player gets reset.