mirror of https://github.com/OpenTTD/OpenTTD.git
Fix: [Network] crash when last-joined server that is no longer available (#9503)
If you update the server-list while not having last-joined selected and it is no longer available, the game crashed.
This commit is contained in:
parent
b83820e723
commit
4066a07d8f
|
@ -249,15 +249,21 @@ protected:
|
||||||
this->servers.clear();
|
this->servers.clear();
|
||||||
|
|
||||||
bool found_current_server = false;
|
bool found_current_server = false;
|
||||||
|
bool found_last_joined = false;
|
||||||
for (NetworkGameList *ngl = _network_game_list; ngl != nullptr; ngl = ngl->next) {
|
for (NetworkGameList *ngl = _network_game_list; ngl != nullptr; ngl = ngl->next) {
|
||||||
this->servers.push_back(ngl);
|
this->servers.push_back(ngl);
|
||||||
if (ngl == this->server) {
|
if (ngl == this->server) {
|
||||||
found_current_server = true;
|
found_current_server = true;
|
||||||
}
|
}
|
||||||
|
if (ngl == this->last_joined) {
|
||||||
|
found_last_joined = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
/* A refresh can cause the current server to be delete; so unselect. */
|
/* A refresh can cause the current server to be delete; so unselect. */
|
||||||
|
if (!found_last_joined) {
|
||||||
|
this->last_joined = nullptr;
|
||||||
|
}
|
||||||
if (!found_current_server) {
|
if (!found_current_server) {
|
||||||
if (this->server == this->last_joined) this->last_joined = nullptr;
|
|
||||||
this->server = nullptr;
|
this->server = nullptr;
|
||||||
this->list_pos = SLP_INVALID;
|
this->list_pos = SLP_INVALID;
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue