diff --git a/src/newgrf.cpp b/src/newgrf.cpp --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -8419,10 +8419,10 @@ static bool HandleParameterInfo(ByteRead if (id >= _cur.grfconfig->param_info.size()) { _cur.grfconfig->param_info.resize(id + 1); } - if (_cur.grfconfig->param_info[id] == nullptr) { - _cur.grfconfig->param_info[id] = new GRFParameterInfo(id); - } - _cur_parameter = _cur.grfconfig->param_info[id]; + if (!_cur.grfconfig->param_info[id].has_value()) { + _cur.grfconfig->param_info[id] = GRFParameterInfo(id); + } + _cur_parameter = &_cur.grfconfig->param_info[id].value(); /* Read all parameter-data and process each node. */ if (!HandleNodes(buf, _tags_parameters)) return false; type = buf->ReadByte();