From 6fecd62cad1fc39afbe7c679d8a85b6d0152e61b Mon Sep 17 00:00:00 2001 From: rubidium Date: Sat, 3 Dec 2011 21:31:44 +0000 Subject: [PATCH] (svn r23403) [1.1] -Backport from trunk: - Fix: [Network] Do not send chat messages to clients that have not joined yet [FS#4826] (r23337) - Fix: Assertion could be triggered in case a station was removed just after a vehicle delivered cargo to it [FS#4849] (r23312) - Fix: Pathfinders go haywire when you build a lock over a ship going perpendicular to the axis of the new lock [FS#4845] (r23284) - Fix: [NewGRF] Prevent against writing data for unknown fonts (r23283) --- os/windows/installer/install.nsi | 2 +- src/network/network_server.cpp | 2 ++ src/newgrf.cpp | 6 +++++- src/station_cmd.cpp | 4 ++-- src/water_cmd.cpp | 9 +++++++-- 5 files changed, 17 insertions(+), 6 deletions(-) diff --git a/os/windows/installer/install.nsi b/os/windows/installer/install.nsi index 04b3a041ca..8b96ea23f6 100644 --- a/os/windows/installer/install.nsi +++ b/os/windows/installer/install.nsi @@ -86,7 +86,7 @@ Page custom SelectCDEnter SelectCDExit ": TTD folder" !define MUI_FINISHPAGE_TITLE_3LINES !define MUI_FINISHPAGE_RUN_TEXT "Run ${APPNAMEANDVERSION} now!" !define MUI_FINISHPAGE_RUN "$INSTDIR\openttd.exe" -!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for the latest news, FAQs and downloads" +!define MUI_FINISHPAGE_LINK "Visit the OpenTTD site for more information" !define MUI_FINISHPAGE_LINK_LOCATION "${APPURLLINK}" !define MUI_FINISHPAGE_NOREBOOTSUPPORT !define MUI_FINISHPAGE_SHOWREADME "$INSTDIR\readme.txt" diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 5a2b582c84..05a06189ad 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -669,6 +669,8 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::SendCommand(const CommandPacke NetworkRecvStatus ServerNetworkGameSocketHandler::SendChat(NetworkAction action, ClientID client_id, bool self_send, const char *msg, int64 data) { + if (this->status != STATUS_ACTIVE) return NETWORK_RECV_STATUS_OKAY; + Packet *p = new Packet(PACKET_SERVER_CHAT); p->Send_uint8 (action); diff --git a/src/newgrf.cpp b/src/newgrf.cpp index 2e70d222ed..c3db9cad0c 100644 --- a/src/newgrf.cpp +++ b/src/newgrf.cpp @@ -6405,10 +6405,14 @@ static void LoadFontGlyph(ByteReader *buf) uint8 num_char = buf->ReadByte(); uint16 base_char = buf->ReadWord(); + if (size >= FS_END) { + grfmsg(1, "LoadFontGlyph: Size %u is not supported, ignoring", size); + } + grfmsg(7, "LoadFontGlyph: Loading %u glyph(s) at 0x%04X for size %u", num_char, base_char, size); for (uint c = 0; c < num_char; c++) { - SetUnicodeGlyph(size, base_char + c, _cur_spriteid); + if (size < FS_END) SetUnicodeGlyph(size, base_char + c, _cur_spriteid); _nfo_line++; LoadNextSprite(_cur_spriteid++, _file_index, _nfo_line); } diff --git a/src/station_cmd.cpp b/src/station_cmd.cpp index 87fd62b719..22b1c2a32b 100644 --- a/src/station_cmd.cpp +++ b/src/station_cmd.cpp @@ -2949,8 +2949,8 @@ static VehicleEnterTileStatus VehicleEnter_Station(Vehicle *v, TileIndex tile, i */ static bool StationHandleBigTick(BaseStation *st) { - if (!st->IsInUse() && ++st->delete_ctr >= 8) { - delete st; + if (!st->IsInUse()) { + if (++st->delete_ctr >= 8) delete st; return false; } diff --git a/src/water_cmd.cpp b/src/water_cmd.cpp index 65460606c7..f412b4f9d4 100644 --- a/src/water_cmd.cpp +++ b/src/water_cmd.cpp @@ -205,12 +205,17 @@ static CommandCost DoBuildLock(TileIndex tile, DiagDirection dir, DoCommandFlag { CommandCost cost(EXPENSES_CONSTRUCTION); + int delta = TileOffsByDiagDir(dir); + CommandCost ret = EnsureNoVehicleOnGround(tile); + if (ret.Succeeded()) ret = EnsureNoVehicleOnGround(tile + delta); + if (ret.Succeeded()) ret = EnsureNoVehicleOnGround(tile - delta); + if (ret.Failed()) return ret; + /* middle tile */ - CommandCost ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); + ret = DoCommand(tile, 0, 0, flags, CMD_LANDSCAPE_CLEAR); if (ret.Failed()) return ret; cost.AddCost(ret); - int delta = TileOffsByDiagDir(dir); /* lower tile */ WaterClass wc_lower = IsWaterTile(tile - delta) ? GetWaterClass(tile - delta) : WATER_CLASS_CANAL;