mirror of https://github.com/OpenTTD/OpenTTD.git
Codechange: use std::unique_ptr to manager GRFErrors in GRFConfig
This commit is contained in:
parent
a312a6c1b2
commit
f78aa1e720
|
@ -449,12 +449,11 @@ static GRFError *DisableGrf(StringID message = STR_NULL, GRFConfig *config = nul
|
||||||
if (config == _cur.grfconfig) _cur.skip_sprites = -1;
|
if (config == _cur.grfconfig) _cur.skip_sprites = -1;
|
||||||
|
|
||||||
if (message != STR_NULL) {
|
if (message != STR_NULL) {
|
||||||
delete config->error;
|
config->error = std::make_unique<GRFError>(STR_NEWGRF_ERROR_MSG_FATAL, message);
|
||||||
config->error = new GRFError(STR_NEWGRF_ERROR_MSG_FATAL, message);
|
|
||||||
if (config == _cur.grfconfig) config->error->param_value[0] = _cur.nfo_line;
|
if (config == _cur.grfconfig) config->error->param_value[0] = _cur.nfo_line;
|
||||||
}
|
}
|
||||||
|
|
||||||
return config->error;
|
return config->error.get();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -7134,8 +7133,7 @@ static void GRFLoadError(ByteReader *buf)
|
||||||
DisableGrf();
|
DisableGrf();
|
||||||
|
|
||||||
/* Make sure we show fatal errors, instead of silly infos from before */
|
/* Make sure we show fatal errors, instead of silly infos from before */
|
||||||
delete _cur.grfconfig->error;
|
_cur.grfconfig->error.reset();
|
||||||
_cur.grfconfig->error = nullptr;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if (message_id >= lengthof(msgstr) && message_id != 0xFF) {
|
if (message_id >= lengthof(msgstr) && message_id != 0xFF) {
|
||||||
|
@ -7151,7 +7149,8 @@ static void GRFLoadError(ByteReader *buf)
|
||||||
/* For now we can only show one message per newgrf file. */
|
/* For now we can only show one message per newgrf file. */
|
||||||
if (_cur.grfconfig->error != nullptr) return;
|
if (_cur.grfconfig->error != nullptr) return;
|
||||||
|
|
||||||
GRFError *error = new GRFError(sevstr[severity]);
|
_cur.grfconfig->error = std::make_unique<GRFError>(sevstr[severity]);
|
||||||
|
GRFError *error = _cur.grfconfig->error.get();
|
||||||
|
|
||||||
if (message_id == 0xFF) {
|
if (message_id == 0xFF) {
|
||||||
/* This is a custom error message. */
|
/* This is a custom error message. */
|
||||||
|
@ -7181,8 +7180,6 @@ static void GRFLoadError(ByteReader *buf)
|
||||||
uint param_number = buf->ReadByte();
|
uint param_number = buf->ReadByte();
|
||||||
error->param_value[i] = _cur.grffile->GetParam(param_number);
|
error->param_value[i] = _cur.grffile->GetParam(param_number);
|
||||||
}
|
}
|
||||||
|
|
||||||
_cur.grfconfig->error = error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Action 0x0C */
|
/* Action 0x0C */
|
||||||
|
@ -8723,10 +8720,7 @@ static void ResetNewGRF()
|
||||||
static void ResetNewGRFErrors()
|
static void ResetNewGRFErrors()
|
||||||
{
|
{
|
||||||
for (GRFConfig *c = _grfconfig; c != nullptr; c = c->next) {
|
for (GRFConfig *c = _grfconfig; c != nullptr; c = c->next) {
|
||||||
if (!HasBit(c->flags, GCF_COPY) && c->error != nullptr) {
|
c->error.reset();
|
||||||
delete c->error;
|
|
||||||
c->error = nullptr;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -10011,7 +10005,7 @@ void LoadNewGRF(uint load_index, uint num_baseset)
|
||||||
if (num_non_static == NETWORK_MAX_GRF_COUNT) {
|
if (num_non_static == NETWORK_MAX_GRF_COUNT) {
|
||||||
Debug(grf, 0, "'{}' is not loaded as the maximum number of non-static GRFs has been reached", c->filename);
|
Debug(grf, 0, "'{}' is not loaded as the maximum number of non-static GRFs has been reached", c->filename);
|
||||||
c->status = GCS_DISABLED;
|
c->status = GCS_DISABLED;
|
||||||
c->error = new GRFError(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED);
|
c->error = std::make_unique<GRFError>(STR_NEWGRF_ERROR_MSG_FATAL, STR_NEWGRF_ERROR_TOO_MANY_NEWGRFS_LOADED);
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
num_non_static++;
|
num_non_static++;
|
||||||
|
|
|
@ -64,7 +64,7 @@ GRFConfig::GRFConfig(const GRFConfig &config) :
|
||||||
MemCpyT<uint8>(this->original_md5sum, config.original_md5sum, lengthof(this->original_md5sum));
|
MemCpyT<uint8>(this->original_md5sum, config.original_md5sum, lengthof(this->original_md5sum));
|
||||||
MemCpyT<uint32>(this->param, config.param, lengthof(this->param));
|
MemCpyT<uint32>(this->param, config.param, lengthof(this->param));
|
||||||
if (config.filename != nullptr) this->filename = stredup(config.filename);
|
if (config.filename != nullptr) this->filename = stredup(config.filename);
|
||||||
if (config.error != nullptr) this->error = new GRFError(*config.error);
|
if (config.error != nullptr) this->error = std::make_unique<GRFError>(*config.error);
|
||||||
for (uint i = 0; i < config.param_info.size(); i++) {
|
for (uint i = 0; i < config.param_info.size(); i++) {
|
||||||
if (config.param_info[i] == nullptr) {
|
if (config.param_info[i] == nullptr) {
|
||||||
this->param_info.push_back(nullptr);
|
this->param_info.push_back(nullptr);
|
||||||
|
@ -80,7 +80,6 @@ GRFConfig::~GRFConfig()
|
||||||
/* GCF_COPY as in NOT stredupped/alloced the filename */
|
/* GCF_COPY as in NOT stredupped/alloced the filename */
|
||||||
if (!HasBit(this->flags, GCF_COPY)) {
|
if (!HasBit(this->flags, GCF_COPY)) {
|
||||||
free(this->filename);
|
free(this->filename);
|
||||||
delete this->error;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for (uint i = 0; i < this->param_info.size(); i++) delete this->param_info[i];
|
for (uint i = 0; i < this->param_info.size(); i++) delete this->param_info[i];
|
||||||
|
|
|
@ -166,7 +166,7 @@ struct GRFConfig : ZeroedMemoryAllocator {
|
||||||
GRFTextWrapper name; ///< NOSAVE: GRF name (Action 0x08)
|
GRFTextWrapper name; ///< NOSAVE: GRF name (Action 0x08)
|
||||||
GRFTextWrapper info; ///< NOSAVE: GRF info (author, copyright, ...) (Action 0x08)
|
GRFTextWrapper info; ///< NOSAVE: GRF info (author, copyright, ...) (Action 0x08)
|
||||||
GRFTextWrapper url; ///< NOSAVE: URL belonging to this GRF.
|
GRFTextWrapper url; ///< NOSAVE: URL belonging to this GRF.
|
||||||
GRFError *error; ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B)
|
std::unique_ptr<GRFError> error; ///< NOSAVE: Error/Warning during GRF loading (Action 0x0B)
|
||||||
|
|
||||||
uint32 version; ///< NOSAVE: Version a NewGRF can set so only the newest NewGRF is shown
|
uint32 version; ///< NOSAVE: Version a NewGRF can set so only the newest NewGRF is shown
|
||||||
uint32 min_loadable_version; ///< NOSAVE: Minimum compatible version a NewGRF can define
|
uint32 min_loadable_version; ///< NOSAVE: Minimum compatible version a NewGRF can define
|
||||||
|
|
Loading…
Reference in New Issue