summaryrefslogtreecommitdiff
path: root/src/network/network_udp.cpp
diff options
context:
space:
mode:
authoryexo <yexo@openttd.org>2011-03-03 18:47:46 +0000
committeryexo <yexo@openttd.org>2011-03-03 18:47:46 +0000
commit93533b603abf5423cadc0dd02b0ae31ec5b95f7b (patch)
tree00aa791096d399a24d36ab2078d93c6153a9b975 /src/network/network_udp.cpp
parent21cc2da71a4c0679c8ba31b5fc90c3850838ec34 (diff)
downloadopenttd-93533b603abf5423cadc0dd02b0ae31ec5b95f7b.tar.xz
(svn r22162) -Fix [FS#4533]: No update of NewGRF window when unknown GRF name becomes available
Diffstat (limited to 'src/network/network_udp.cpp')
-rw-r--r--src/network/network_udp.cpp23
1 files changed, 14 insertions, 9 deletions
diff --git a/src/network/network_udp.cpp b/src/network/network_udp.cpp
index 7ed8cae8a..8a4a6f945 100644
--- a/src/network/network_udp.cpp
+++ b/src/network/network_udp.cpp
@@ -369,7 +369,6 @@ DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_SERVER_NEWGRFS)
if (num_grfs > NETWORK_MAX_GRF_COUNT) return;
for (i = 0; i < num_grfs; i++) {
- char *unknown_name;
char name[NETWORK_GRF_NAME_LENGTH];
GRFIdentifier c;
@@ -380,12 +379,12 @@ DEF_UDP_RECEIVE_COMMAND(Client, PACKET_UDP_SERVER_NEWGRFS)
* and causes problems when showing the NewGRF list. */
if (StrEmpty(name)) continue;
- /* Finds the fake GRFConfig for the just read GRF ID and MD5sum tuple.
+ /* Try to find the GRFTextWrapper for the name of this GRF ID and MD5sum tuple.
* If it exists and not resolved yet, then name of the fake GRF is
* overwritten with the name from the reply. */
- unknown_name = FindUnknownGRFName(c.grfid, c.md5sum, false);
- if (unknown_name != NULL && strcmp(unknown_name, UNKNOWN_GRF_NAME_PLACEHOLDER) == 0) {
- ttd_strlcpy(unknown_name, name, NETWORK_GRF_NAME_LENGTH);
+ GRFTextWrapper *unknown_name = FindUnknownGRFName(c.grfid, c.md5sum, false);
+ if (unknown_name != NULL && strcmp(GetGRFStringFromGRFText(unknown_name->text), UNKNOWN_GRF_NAME_PLACEHOLDER) == 0) {
+ AddGRFTextToList(&unknown_name->text, name);
}
}
}
@@ -398,12 +397,18 @@ void ClientNetworkUDPSocketHandler::HandleIncomingNetworkGameInfoGRFConfig(GRFCo
/* Don't know the GRF, so mark game incompatible and the (possibly)
* already resolved name for this GRF (another server has sent the
* name of the GRF already */
- AddGRFTextToList(&config->name, FindUnknownGRFName(config->ident.grfid, config->ident.md5sum, true));
+ config->name->Release();
+ config->name = FindUnknownGRFName(config->ident.grfid, config->ident.md5sum, true);
+ config->name->AddRef();
config->status = GCS_NOT_FOUND;
} else {
- config->filename = f->filename;
- config->name = DuplicateGRFText(f->name);
- config->info = f->info;
+ config->filename = f->filename;
+ config->name->Release();
+ config->name = f->name;
+ config->name->AddRef();
+ config->info->Release();
+ config->info = f->info;
+ config->info->AddRef();
}
SetBit(config->flags, GCF_COPY);
}