This is an automated email from the git hooks/post-receive script.

apo pushed a commit to branch master
in repository widelands.

commit 2104a15f5898136cc20c929236ec1a8fdb67244f
Author: Markus Koschany <[email protected]>
Date:   Wed Aug 23 23:07:32 2017 +0200

    Add gcc7.patch and fix FTBFS with GCC 7.
    
    Closes: #871114
---
 debian/changelog          |   1 +
 debian/patches/gcc7.patch | 859 ++++++++++++++++++++++++++++++++++++++++++++++
 debian/patches/series     |   1 +
 3 files changed, 861 insertions(+)

diff --git a/debian/changelog b/debian/changelog
index 92a419e..ed681f2 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -7,6 +7,7 @@ widelands (1:19+repack-4) UNRELEASED; urgency=medium
   * Vcs-Browser: Use canonical Vcs-URI.
   * Do not convert png files to xpm anymore. Drop imagemagick from B-D.
   * Move font dependencies from widelands to widelands-data. (Closes: #861043)
+  * Add gcc7.patch and fix FTBFS with GCC 7. (Closes: #871114)
 
  -- Markus Koschany <[email protected]>  Wed, 23 Aug 2017 22:14:58 +0200
 
diff --git a/debian/patches/gcc7.patch b/debian/patches/gcc7.patch
new file mode 100644
index 0000000..10091e6
--- /dev/null
+++ b/debian/patches/gcc7.patch
@@ -0,0 +1,859 @@
+From: Markus Koschany <[email protected]>
+Date: Wed, 23 Aug 2017 23:07:01 +0200
+Subject: gcc7
+
+---
+ .travis.yml                                        | 24 +++++++------------
+ CMakeLists.txt                                     |  5 ++--
+ src/CMakeLists.txt                                 |  1 +
+ src/base/macros.h                                  | 10 ++++++++
+ src/graphic/gl/fill_rect_program.cc                |  6 ++---
+ src/logic/CMakeLists.txt                           | 20 ++++++++++++----
+ src/logic/game_controller.h                        |  2 +-
+ src/logic/game_settings.cc                         |  1 +
+ src/logic/game_settings.h                          | 11 +++++----
+ src/logic/map_objects/immovable.cc                 |  2 +-
+ src/logic/map_objects/tribes/production_program.cc |  3 +--
+ src/logic/map_objects/tribes/ship.cc               |  5 ++--
+ src/logic/mapfringeregion.cc                       | 14 +++++++----
+ src/logic/player_end_result.h                      | 27 ++++++++++++++++++++++
+ src/logic/playersmanager.h                         |  8 +------
+ src/logic/single_player_game_controller.h          |  1 +
+ src/network/netclient.cc                           |  3 +--
+ src/network/netclient.h                            |  1 +
+ src/network/nethost.cc                             |  8 +++----
+ src/network/nethost.h                              |  1 +
+ src/scripting/CMakeLists.txt                       |  1 +
+ src/scripting/lua_game.cc                          |  1 +
+ src/ui_basic/editbox.cc                            | 21 +++++++++--------
+ src/ui_basic/listselect.cc                         | 10 ++++----
+ src/ui_basic/multilineeditbox.cc                   | 17 +++++++-------
+ src/ui_fsmenu/loadgame.cc                          |  5 ++--
+ src/wui/game_summary.cc                            | 11 +++++----
+ src/wui/interactive_base.cc                        | 10 ++++----
+ src/wui/interactive_player.cc                      |  2 +-
+ 29 files changed, 143 insertions(+), 88 deletions(-)
+ create mode 100644 src/logic/game_settings.cc
+ create mode 100644 src/logic/player_end_result.h
+
+diff --git a/.travis.yml b/.travis.yml
+index b894510..f762f8a 100644
+--- a/.travis.yml
++++ b/.travis.yml
+@@ -19,43 +19,35 @@ matrix:
+        env: CLANG_VERSION="3.4" BUILD_TYPE="Debug"
+      - compiler: clang
+        env: CLANG_VERSION="3.5" BUILD_TYPE="Debug"
+-     - compiler: clang
+-       env: CLANG_VERSION="3.6" BUILD_TYPE="Debug"
+-     - compiler: clang
+-       env: CLANG_VERSION="3.7" BUILD_TYPE="Debug"
+-     - compiler: clang
+-       env: CLANG_VERSION="3.8" BUILD_TYPE="Debug"
+      - compiler: clang
+        env: CLANG_VERSION="3.9" BUILD_TYPE="Debug"
++     - compiler: clang
++       env: CLANG_VERSION="4.0" BUILD_TYPE="Debug"
+      - compiler: clang
+        env: CLANG_VERSION="3.4" BUILD_TYPE="Release"
+      - compiler: clang
+        env: CLANG_VERSION="3.5" BUILD_TYPE="Release"
+-     - compiler: clang
+-       env: CLANG_VERSION="3.6" BUILD_TYPE="Release"
+-     - compiler: clang
+-       env: CLANG_VERSION="3.7" BUILD_TYPE="Release"
+-     - compiler: clang
+-       env: CLANG_VERSION="3.8" BUILD_TYPE="Release"
+      - compiler: clang
+        env: CLANG_VERSION="3.9" BUILD_TYPE="Release"
++     - compiler: clang
++       env: CLANG_VERSION="4.0" BUILD_TYPE="Release"
+      - compiler: gcc
+        env: GCC_VERSION="4.7" BUILD_TYPE="Debug"
+      - compiler: gcc
+        env: GCC_VERSION="4.8" BUILD_TYPE="Debug"
+      - compiler: gcc
+        env: GCC_VERSION="4.9" BUILD_TYPE="Debug"
+-     - compiler: gcc
+-       env: GCC_VERSION="5" BUILD_TYPE="Debug"
+      - compiler: gcc
+        env: GCC_VERSION="6" BUILD_TYPE="Debug"
++     - compiler: gcc
++       env: GCC_VERSION="7" BUILD_TYPE="Debug"
+      - compiler: gcc
+        env: GCC_VERSION="4.7" BUILD_TYPE="Release"
+      - compiler: gcc
+        env: GCC_VERSION="4.8" BUILD_TYPE="Release"
+      - compiler: gcc
+        env: GCC_VERSION="4.9" BUILD_TYPE="Release"
+-     - compiler: gcc
+-       env: GCC_VERSION="5" BUILD_TYPE="Release"
+      - compiler: gcc
+        env: GCC_VERSION="6" BUILD_TYPE="Release"
++     - compiler: gcc
++       env: GCC_VERSION="7" BUILD_TYPE="Release"
+diff --git a/CMakeLists.txt b/CMakeLists.txt
+index f6f1bff..d08355f 100644
+--- a/CMakeLists.txt
++++ b/CMakeLists.txt
+@@ -119,7 +119,6 @@ if("${CMAKE_CXX_COMPILER_ID}" STREQUAL "Clang")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wno-padded")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wno-sign-conversion")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wno-missing-noreturn")
+-  wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wno-implicit-fallthrough")
+ 
+   # TODO(sirver): weak-vtables should be enabled, but leads to lot of errors 
right now.
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wno-weak-vtables")
+@@ -135,6 +134,9 @@ else()
+   if(WIN32)
+     # This is needed for getenv().
+     wl_add_flag(WL_GENERIC_CXX_FLAGS "-std=gnu++11")
++  else()
++    # SDL and MinGW both declare 'unsigned int 
__builtin_ia32_crc32qi(unsigned int, unsigned char)', resulting in lots of 
warnings. So, we can't have this flag in Windows.
++    wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wredundant-decls")
+   endif()
+ 
+   if (NOT (CMAKE_CXX_COMPILER_VERSION VERSION_LESS 4.8))
+@@ -170,7 +172,6 @@ else()
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Woverlength-strings")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wpacked")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wpointer-arith")
+-  wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wredundant-decls")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wsign-promo")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wsync-nand")
+   wl_add_flag(WL_COMPILE_DIAGNOSTICS "-Wtrampolines")
+diff --git a/src/CMakeLists.txt b/src/CMakeLists.txt
+index ff21685..6512646 100644
+--- a/src/CMakeLists.txt
++++ b/src/CMakeLists.txt
+@@ -113,6 +113,7 @@ wl_library(widelands_ball_of_mud
+     logic
+     logic_game_controller
+     logic_game_settings
++    logic_single_player_game_settings
+     map_io_map_loader
+     network
+     profile
+diff --git a/src/base/macros.h b/src/base/macros.h
+index 29ec81c..c9b2169 100644
+--- a/src/base/macros.h
++++ b/src/base/macros.h
+@@ -67,6 +67,16 @@
+ #define DIAG_OFF(x) GCC_DIAG_OFF(x) CLANG_DIAG_OFF(x)
+ #define DIAG_ON(x) GCC_DIAG_ON(x) CLANG_DIAG_ON(x)
+ 
++// For switch statements: Tell gcc7 and clang that a fallthrough is intended
++// 
https://developers.redhat.com/blog/2017/03/10/wimplicit-fallthrough-in-gcc-7/
++#ifdef __clang__
++#define FALLS_THROUGH /* Falls through */ [[clang::fallthrough]]
++#elif __GNUC__ >= 7
++#define FALLS_THROUGH /* Falls through */ [[gnu::fallthrough]]
++#else
++#define FALLS_THROUGH /* Falls through */
++#endif
++
+ // disallow copying or assigning a class
+ #define DISALLOW_COPY_AND_ASSIGN(TypeName)                                    
                     \
+       TypeName(const TypeName&) = delete;                                     
                        \
+diff --git a/src/graphic/gl/fill_rect_program.cc 
b/src/graphic/gl/fill_rect_program.cc
+index bbc36ef..568a360 100644
+--- a/src/graphic/gl/fill_rect_program.cc
++++ b/src/graphic/gl/fill_rect_program.cc
+@@ -21,7 +21,7 @@
+ 
+ #include <vector>
+ 
+-#include "base/log.h"
++#include "base/macros.h"
+ #include "base/wexception.h"
+ 
+ // static
+@@ -66,7 +66,7 @@ void FillRectProgram::draw(const std::vector<Arguments>& 
arguments) {
+               switch (template_args.blend_mode) {
+               case BlendMode::Subtract:
+                       glBlendEquation(GL_FUNC_REVERSE_SUBTRACT);
+-              /* fallthrough intended */
++                      FALLS_THROUGH;
+               case BlendMode::UseAlpha:
+                       glBlendFunc(GL_ONE, GL_ONE);
+                       break;
+@@ -132,7 +132,7 @@ void FillRectProgram::draw(const std::vector<Arguments>& 
arguments) {
+               switch (template_args.blend_mode) {
+               case BlendMode::Subtract:
+                       glBlendEquation(GL_FUNC_ADD);
+-              /* fallthrough intended */
++                      FALLS_THROUGH;
+               case BlendMode::UseAlpha:
+                       glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
+                       break;
+diff --git a/src/logic/CMakeLists.txt b/src/logic/CMakeLists.txt
+index 120dd82..f3f2470 100644
+--- a/src/logic/CMakeLists.txt
++++ b/src/logic/CMakeLists.txt
+@@ -4,20 +4,29 @@ wl_library(logic_widelands_geometry
+     widelands_geometry.h
+ )
+ 
+-wl_library(logic_game_settings
++ wl_library(logic_game_settings
+   SRCS
++    game_settings.cc
+     game_settings.h
+-    single_player_game_settings_provider.cc
+-    single_player_game_settings_provider.h
++    player_end_result.h
+   DEPENDS
+-    ai
+-    base_exceptions
+     io_filesystem
+     logic
+     scripting_lua_interface
+     scripting_lua_table
+ )
+ 
++wl_library(logic_single_player_game_settings
++  SRCS
++    single_player_game_settings_provider.cc
++    single_player_game_settings_provider.h
++  DEPENDS
++    ai
++    base_exceptions
++    logic
++    logic_game_settings
++ )
++
+ wl_library(logic_game_controller
+   SRCS
+     game_controller.h
+@@ -28,6 +37,7 @@ wl_library(logic_game_controller
+   DEPENDS
+     ai
+     logic
++    logic_game_settings
+     profile
+     ui_basic
+     widelands_ball_of_mud
+diff --git a/src/logic/game_controller.h b/src/logic/game_controller.h
+index 06d12c8..bddbc84 100644
+--- a/src/logic/game_controller.h
++++ b/src/logic/game_controller.h
+@@ -22,12 +22,12 @@
+ 
+ #include <string>
+ 
++#include "logic/player_end_result.h"
+ #include "logic/widelands.h"
+ 
+ namespace Widelands {
+ class Game;
+ class PlayerCommand;
+-enum class PlayerEndResult : uint8_t;
+ }
+ 
+ /**
+diff --git a/src/logic/game_settings.cc b/src/logic/game_settings.cc
+new file mode 100644
+index 0000000..e4501e1
+--- /dev/null
++++ b/src/logic/game_settings.cc
+@@ -0,0 +1 @@
++// Dummy to make CMake happy
+diff --git a/src/logic/game_settings.h b/src/logic/game_settings.h
+index 0c56aad..bd57801 100644
+--- a/src/logic/game_settings.h
++++ b/src/logic/game_settings.h
+@@ -26,14 +26,11 @@
+ 
+ #include "io/filesystem/layered_filesystem.h"
+ #include "logic/map_objects/tribes/tribe_basic_info.h"
++#include "logic/player_end_result.h"
+ #include "logic/widelands.h"
+ #include "scripting/lua_interface.h"
+ #include "scripting/lua_table.h"
+ 
+-namespace Widelands {
+-enum class PlayerEndResult : uint8_t;
+-}
+-
+ struct PlayerSettings {
+       enum State { stateOpen, stateHuman, stateComputer, stateClosed, 
stateShared };
+ 
+@@ -60,6 +57,12 @@ struct UserSettings {
+               return not_connected() - 1;
+       }
+ 
++      UserSettings(Widelands::PlayerEndResult init_result, bool init_ready)
++         : position(0), name(""), result(init_result), 
win_condition_string(""), ready(init_ready) {
++      }
++      UserSettings() : UserSettings(Widelands::PlayerEndResult::kUndefined, 
false) {
++      }
++
+       uint8_t position;
+       std::string name;
+       Widelands::PlayerEndResult result;
+diff --git a/src/logic/map_objects/immovable.cc 
b/src/logic/map_objects/immovable.cc
+index 3e1ab2e..8886396 100644
+--- a/src/logic/map_objects/immovable.cc
++++ b/src/logic/map_objects/immovable.cc
+@@ -947,7 +947,7 @@ ImmovableProgram::ActSeed::ActSeed(char* parameters, 
ImmovableDescr& descr) {
+                               probability = value;
+                               //  fallthrough
+                       }
+-                      /* no break */
++                              FALLS_THROUGH;
+                       case '\0':
+                               goto end;
+                       default:
+diff --git a/src/logic/map_objects/tribes/production_program.cc 
b/src/logic/map_objects/tribes/production_program.cc
+index c06cc04..95a2aa3 100644
+--- a/src/logic/map_objects/tribes/production_program.cc
++++ b/src/logic/map_objects/tribes/production_program.cc
+@@ -245,9 +245,8 @@ void ProductionProgram::parse_ware_type_group(char*& 
parameters,
+                                                   "the specified ware type(s) 
is only %u, so the group can "
+                                                   "never be fulfilled by the 
site",
+                                                   count, count_max);
+-                      //  fallthrough
+               }
+-              /* no break */
++                      FALLS_THROUGH;
+               case '\0':
+               case ' ':
+                       group.second = count;
+diff --git a/src/logic/map_objects/tribes/ship.cc 
b/src/logic/map_objects/tribes/ship.cc
+index fd2ebcf..b2a7032 100644
+--- a/src/logic/map_objects/tribes/ship.cc
++++ b/src/logic/map_objects/tribes/ship.cc
+@@ -274,14 +274,13 @@ void Ship::ship_update(Game& game, Bob::State& state) {
+                       return;
+               }
+               log("Oh no... this ship has no sinking animation :(!\n");
+-      // fall trough
++              FALLS_THROUGH;
+       case ShipStates::kSinkAnimation:
+               // The sink animation has been played, so finally remove the 
ship from the map
+               pop_task(game);
+               remove(game);
+               return;
+       }
+-
+       // if the real update function failed (e.g. nothing to transport), the 
ship goes idle
+       ship_update_idle(game, state);
+ }
+@@ -685,7 +684,7 @@ void Ship::ship_update_idle(Game& game, Bob::State& state) 
{
+                       return start_task_idle(game, descr().main_animation(), 
1500);
+               }
+       }
+-
++              FALLS_THROUGH;
+       case ShipStates::kExpeditionWaiting:
+       case ShipStates::kExpeditionPortspaceFound:
+       case ShipStates::kSinkRequest:
+diff --git a/src/logic/mapfringeregion.cc b/src/logic/mapfringeregion.cc
+index 4039e87..52403c1 100644
+--- a/src/logic/mapfringeregion.cc
++++ b/src/logic/mapfringeregion.cc
+@@ -29,9 +29,11 @@ template <> bool 
MapFringeRegion<Area<FCoords>>::advance(const Map& map) {
+               if (area_.radius) {
+                       remaining_in_phase_ = area_.radius;
+                       phase_ = 6;
+-              } else
++                      // Fallthrough
++              } else {
+                       return false;
+-      /* no break */
++              }
++              FALLS_THROUGH;
+       case 1:
+               map.get_trn(area_, &area_);
+               break;
+@@ -53,6 +55,7 @@ template <> bool 
MapFringeRegion<Area<FCoords>>::advance(const Map& map) {
+       default:
+               NEVER_HERE();
+       }
++
+       if (--remaining_in_phase_ == 0) {
+               remaining_in_phase_ = area_.radius;
+               --phase_;
+@@ -66,9 +69,11 @@ template <> bool MapFringeRegion<Area<>>::advance(const 
Map& map) {
+               if (area_.radius) {
+                       remaining_in_phase_ = area_.radius;
+                       phase_ = 6;
+-              } else
++                      // Fallthrough
++              } else {
+                       return false;
+-      /* no break */
++              }
++              FALLS_THROUGH;
+       case 1:
+               map.get_trn(area_, &area_);
+               break;
+@@ -90,6 +95,7 @@ template <> bool MapFringeRegion<Area<>>::advance(const Map& 
map) {
+       default:
+               NEVER_HERE();
+       }
++
+       if (--remaining_in_phase_ == 0) {
+               remaining_in_phase_ = area_.radius;
+               --phase_;
+diff --git a/src/logic/player_end_result.h b/src/logic/player_end_result.h
+new file mode 100644
+index 0000000..1f794d2
+--- /dev/null
++++ b/src/logic/player_end_result.h
+@@ -0,0 +1,27 @@
++/*
++ * Copyright (C) 2008-2017 by the Widelands Development Team
++ *
++ * This program is free software; you can redistribute it and/or
++ * modify it under the terms of the GNU General Public License
++ * as published by the Free Software Foundation; either version 2
++ * of the License, or (at your option) any later version.
++ *
++ * This program is distributed in the hope that it will be useful,
++ * but WITHOUT ANY WARRANTY; without even the implied warranty of
++ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
++ * GNU General Public License for more details.
++ *
++ * You should have received a copy of the GNU General Public License
++ * along with this program; if not, write to the Free Software
++ * Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA  02110-1301, 
USA.
++ *
++ */
++
++#ifndef WL_LOGIC_PLAYER_END_RESULT_H
++#define WL_LOGIC_PLAYER_END_RESULT_H
++
++namespace Widelands {
++enum class PlayerEndResult : uint8_t { kLost = 0, kWon = 1, kResigned = 2, 
kUndefined = 255 };
++}
++
++#endif  // end of include guard: WL_LOGIC_PLAYER_END_RESULT_H
+diff --git a/src/logic/playersmanager.h b/src/logic/playersmanager.h
+index 19303f4..585e691 100644
+--- a/src/logic/playersmanager.h
++++ b/src/logic/playersmanager.h
+@@ -24,6 +24,7 @@
+ #include <vector>
+ 
+ #include "logic/constants.h"
++#include "logic/player_end_result.h"
+ #include "logic/widelands.h"
+ 
+ namespace Widelands {
+@@ -32,13 +33,6 @@ class EditorGameBase;
+ class Player;
+ class Player;
+ 
+-enum class PlayerEndResult : uint8_t {
+-      PLAYER_LOST = 0,
+-      PLAYER_WON = 1,
+-      PLAYER_RESIGNED = 2,
+-      UNDEFINED = 255
+-};
+-
+ /**
+  * Hold data once a player left the game, or on game ends.
+  * Allowed values for the info string, as key=value pairs separated
+diff --git a/src/logic/single_player_game_controller.h 
b/src/logic/single_player_game_controller.h
+index 926748b..5279af9 100644
+--- a/src/logic/single_player_game_controller.h
++++ b/src/logic/single_player_game_controller.h
+@@ -22,6 +22,7 @@
+ 
+ #include "ai/computer_player.h"
+ #include "logic/game_controller.h"
++#include "logic/player_end_result.h"
+ 
+ class SinglePlayerGameController : public GameController {
+ public:
+diff --git a/src/network/netclient.cc b/src/network/netclient.cc
+index dba73fc..c476ae3 100644
+--- a/src/network/netclient.cc
++++ b/src/network/netclient.cc
+@@ -476,8 +476,7 @@ void NetClient::receive_one_user(uint32_t const number, 
StreamRead& packet) {
+ 
+       // This might happen, if a users connects after the game starts.
+       if (number == d->settings.users.size()) {
+-              UserSettings newuser;
+-              d->settings.users.push_back(newuser);
++              d->settings.users.push_back(*new UserSettings());
+       }
+ 
+       d->settings.users.at(number).name = packet.string();
+diff --git a/src/network/netclient.h b/src/network/netclient.h
+index 324b643..6320be6 100644
+--- a/src/network/netclient.h
++++ b/src/network/netclient.h
+@@ -23,6 +23,7 @@
+ #include "chat/chat.h"
+ #include "logic/game_controller.h"
+ #include "logic/game_settings.h"
++#include "logic/player_end_result.h"
+ #include "network/network.h"
+ 
+ struct NetClientImpl;
+diff --git a/src/network/nethost.cc b/src/network/nethost.cc
+index a6a159c..131041b 100644
+--- a/src/network/nethost.cc
++++ b/src/network/nethost.cc
+@@ -143,7 +143,7 @@ struct HostGameSettingsProvider : public 
GameSettingsProvider {
+                               newstate = PlayerSettings::stateClosed;
+                               break;
+                       }  // else fall through
+-                    /* no break */
++                      FALLS_THROUGH;
+               case PlayerSettings::stateComputer: {
+                       const ComputerPlayer::ImplementationVector& impls = 
ComputerPlayer::get_implementations();
+                       ComputerPlayer::ImplementationVector::const_iterator it 
= impls.begin();
+@@ -1605,14 +1605,14 @@ void NetHost::welcome_client(uint32_t const number, 
std::string& playername) {
+               for (uint32_t i = 0; i < d->settings.users.size(); ++i)
+                       if (d->settings.users[i].position == 
UserSettings::not_connected()) {
+                               client.usernum = i;
+-                              d->settings.users[i].result = 
Widelands::PlayerEndResult::UNDEFINED;
++                              d->settings.users[i].result = 
Widelands::PlayerEndResult::kUndefined;
+                               d->settings.users[i].ready = true;
+                               break;
+                       }
+       if (client.usernum == -1) {
+               client.usernum = d->settings.users.size();
+               UserSettings newuser;
+-              newuser.result = Widelands::PlayerEndResult::UNDEFINED;
++              newuser.result = Widelands::PlayerEndResult::kUndefined;
+               newuser.ready = true;
+               d->settings.users.push_back(newuser);
+       }
+@@ -2404,7 +2404,7 @@ void NetHost::report_result(uint8_t p_nr,
+               if (user.position == p_nr - 1) {
+                       user.result = result;
+                       user.win_condition_string = info;
+-                      if (result == Widelands::PlayerEndResult::PLAYER_LOST) {
++                      if (result == Widelands::PlayerEndResult::kLost) {
+                               send_system_message_code("PLAYER_DEFEATED", 
user.name);
+                       }
+               }
+diff --git a/src/network/nethost.h b/src/network/nethost.h
+index 04fe9e4..543d7bb 100644
+--- a/src/network/nethost.h
++++ b/src/network/nethost.h
+@@ -22,6 +22,7 @@
+ 
+ #include "logic/game_controller.h"
+ #include "logic/game_settings.h"
++#include "logic/player_end_result.h"
+ #include "logic/widelands.h"
+ #include "network/network.h"
+ 
+diff --git a/src/scripting/CMakeLists.txt b/src/scripting/CMakeLists.txt
+index 493631d..13aac75 100644
+--- a/src/scripting/CMakeLists.txt
++++ b/src/scripting/CMakeLists.txt
+@@ -110,6 +110,7 @@ wl_library(scripting_logic
+     logic
+     logic_campaign_visibility
+     logic_game_controller
++    logic_game_settings
+     logic_widelands_geometry
+     map_io
+     scripting_base
+diff --git a/src/scripting/lua_game.cc b/src/scripting/lua_game.cc
+index f78c386..bedc4cd 100644
+--- a/src/scripting/lua_game.cc
++++ b/src/scripting/lua_game.cc
+@@ -33,6 +33,7 @@
+ #include "logic/objective.h"
+ #include "logic/path.h"
+ #include "logic/player.h"
++#include "logic/player_end_result.h"
+ #include "logic/playersmanager.h"
+ #include "scripting/globals.h"
+ #include "scripting/lua_interface.h"
+diff --git a/src/ui_basic/editbox.cc b/src/ui_basic/editbox.cc
+index ca6aceb..18b6cff 100644
+--- a/src/ui_basic/editbox.cc
++++ b/src/ui_basic/editbox.cc
+@@ -219,15 +219,16 @@ bool EditBox::handle_key(bool const down, SDL_Keysym 
const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_DELETE:
+                       if (m_->caret < m_->text.size()) {
+                               while ((m_->text[++m_->caret] & 0xc0) == 0x80) {
+                               };
+-                              // now handle it like Backspace
+-                      } else
++                              // Now fallthrough to handle it like Backspace
++                      } else {
+                               return true;
+-              /* no break */
++                      }
++                      FALLS_THROUGH;
+               case SDLK_BACKSPACE:
+                       if (m_->caret > 0) {
+                               while ((m_->text[--m_->caret] & 0xc0) == 0x80)
+@@ -242,7 +243,7 @@ bool EditBox::handle_key(bool const down, SDL_Keysym const 
code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_LEFT:
+                       if (m_->caret > 0) {
+                               while ((m_->text[--m_->caret] & 0xc0) == 0x80) {
+@@ -260,7 +261,7 @@ bool EditBox::handle_key(bool const down, SDL_Keysym const 
code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_RIGHT:
+                       if (m_->caret < m_->text.size()) {
+                               while ((m_->text[++m_->caret] & 0xc0) == 0x80) {
+@@ -280,7 +281,7 @@ bool EditBox::handle_key(bool const down, SDL_Keysym const 
code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_HOME:
+                       if (m_->caret != 0) {
+                               m_->caret = 0;
+@@ -293,7 +294,7 @@ bool EditBox::handle_key(bool const down, SDL_Keysym const 
code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_END:
+                       if (m_->caret != m_->text.size()) {
+                               m_->caret = m_->text.size();
+@@ -305,7 +306,7 @@ bool EditBox::handle_key(bool const down, SDL_Keysym const 
code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_UP:
+                       // Load entry from history if active and text is not 
empty
+                       if (history_active_) {
+@@ -323,7 +324,7 @@ bool EditBox::handle_key(bool const down, SDL_Keysym const 
code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_DOWN:
+                       // Load entry from history if active and text is not 
equivalent to the current one
+                       if (history_active_) {
+diff --git a/src/ui_basic/listselect.cc b/src/ui_basic/listselect.cc
+index 696d4e5..1636f5b 100644
+--- a/src/ui_basic/listselect.cc
++++ b/src/ui_basic/listselect.cc
+@@ -454,9 +454,10 @@ bool BaseListselect::handle_key(bool const down, 
SDL_Keysym const code) {
+               uint32_t selected_idx;
+               switch (code.sym) {
+               case SDLK_KP_2:
+-                      if (code.mod & KMOD_NUM)
++                      if (code.mod & KMOD_NUM) {
+                               break;
+-              /* no break */
++                      }
++                      FALLS_THROUGH;
+               case SDLK_DOWN:
+                       selected_idx = selection_index() + 1;
+                       if (selected_idx < size())
+@@ -468,9 +469,10 @@ bool BaseListselect::handle_key(bool const down, 
SDL_Keysym const code) {
+                       }
+                       return true;
+               case SDLK_KP_8:
+-                      if (code.mod & KMOD_NUM)
++                      if (code.mod & KMOD_NUM) {
+                               break;
+-              /* no break */
++                      }
++                      FALLS_THROUGH;
+               case SDLK_UP:
+                       selected_idx = selection_index();
+                       if (selected_idx > 0)
+diff --git a/src/ui_basic/multilineeditbox.cc 
b/src/ui_basic/multilineeditbox.cc
+index 83830bc..e62ba03 100644
+--- a/src/ui_basic/multilineeditbox.cc
++++ b/src/ui_basic/multilineeditbox.cc
+@@ -235,9 +235,10 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       // Let the panel handle the tab key
+                       return get_parent()->handle_key(true, code);
+               case SDLK_KP_PERIOD:
+-                      if (code.mod & KMOD_NUM)
++                      if (code.mod & KMOD_NUM) {
+                               break;
+-              /* no break */
++                      }
++                      FALLS_THROUGH;
+               case SDLK_DELETE:
+                       if (d_->cursor_pos < d_->text.size()) {
+                               d_->erase_bytes(d_->cursor_pos, 
d_->next_char(d_->cursor_pos));
+@@ -256,7 +257,7 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_LEFT: {
+                       if (code.mod & (KMOD_LCTRL | KMOD_RCTRL)) {
+                               uint32_t newpos = d_->prev_char(d_->cursor_pos);
+@@ -279,7 +280,7 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_RIGHT:
+                       if (code.mod & (KMOD_LCTRL | KMOD_RCTRL)) {
+                               uint32_t newpos = d_->next_char(d_->cursor_pos);
+@@ -297,7 +298,7 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_DOWN:
+                       if (d_->cursor_pos < d_->text.size()) {
+                               d_->refresh_ww();
+@@ -326,7 +327,7 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_UP:
+                       if (d_->cursor_pos > 0) {
+                               d_->refresh_ww();
+@@ -353,7 +354,7 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_HOME:
+                       if (code.mod & (KMOD_LCTRL | KMOD_RCTRL)) {
+                               d_->set_cursor_pos(0);
+@@ -371,7 +372,7 @@ bool MultilineEditbox::handle_key(bool const down, 
SDL_Keysym const code) {
+                       if (code.mod & KMOD_NUM) {
+                               break;
+                       }
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_END:
+                       if (code.mod & (KMOD_LCTRL | KMOD_RCTRL)) {
+                               d_->set_cursor_pos(d_->text.size());
+diff --git a/src/ui_fsmenu/loadgame.cc b/src/ui_fsmenu/loadgame.cc
+index 5e5fd46..9f5f03e 100644
+--- a/src/ui_fsmenu/loadgame.cc
++++ b/src/ui_fsmenu/loadgame.cc
+@@ -631,9 +631,10 @@ bool FullscreenMenuLoadGame::handle_key(bool down, 
SDL_Keysym code) {
+ 
+       switch (code.sym) {
+       case SDLK_KP_PERIOD:
+-              if (code.mod & KMOD_NUM)
++              if (code.mod & KMOD_NUM) {
+                       break;
+-      /* no break */
++              }
++              FALLS_THROUGH;
+       case SDLK_DELETE:
+               clicked_delete();
+               return true;
+diff --git a/src/wui/game_summary.cc b/src/wui/game_summary.cc
+index c0864cc..496b1c4 100644
+--- a/src/wui/game_summary.cc
++++ b/src/wui/game_summary.cc
+@@ -26,6 +26,7 @@
+ #include "graphic/graphic.h"
+ #include "logic/game.h"
+ #include "logic/player.h"
++#include "logic/player_end_result.h"
+ #include "logic/playersmanager.h"
+ #include "ui_basic/box.h"
+ #include "ui_basic/button.h"
+@@ -147,7 +148,7 @@ void GameSummaryScreen::fill_data() {
+               Widelands::PlayerEndStatus pes = players_status.at(i);
+               if (ipl && pes.player == ipl->player_number()) {
+                       local_in_game = true;
+-                      local_won = pes.result == 
Widelands::PlayerEndResult::PLAYER_WON;
++                      local_won = pes.result == 
Widelands::PlayerEndResult::kWon;
+                       current_player_position = i;
+               }
+               Widelands::Player* p = game_.get_player(pes.player);
+@@ -163,11 +164,11 @@ void GameSummaryScreen::fill_data() {
+               // Status
+               std::string stat_str;
+               switch (pes.result) {
+-              case Widelands::PlayerEndResult::PLAYER_LOST:
++              case Widelands::PlayerEndResult::kLost:
+                       /** TRANSLATORS: This is shown in the game summary for 
the players who have lost. */
+                       stat_str = _("Lost");
+                       break;
+-              case Widelands::PlayerEndResult::PLAYER_WON:
++              case Widelands::PlayerEndResult::kWon:
+                       /** TRANSLATORS: This is shown in the game summary for 
the players who have won. */
+                       stat_str = _("Won");
+                       if (!single_won) {
+@@ -176,11 +177,11 @@ void GameSummaryScreen::fill_data() {
+                               teawon_ = p->team_number();
+                       }
+                       break;
+-              case Widelands::PlayerEndResult::PLAYER_RESIGNED:
++              case Widelands::PlayerEndResult::kResigned:
+                       /** TRANSLATORS: This is shown in the game summary for 
the players who have resigned. */
+                       stat_str = _("Resigned");
+                       break;
+-              case Widelands::PlayerEndResult::UNDEFINED:
++              case Widelands::PlayerEndResult::kUndefined:
+                       /** TRANSLATORS: This is shown in the game summary when 
we don't know */
+                       /** TRANSLATORS: if the player has lost or won. */
+                       stat_str = pgettext("player_won", "Unknown");
+diff --git a/src/wui/interactive_base.cc b/src/wui/interactive_base.cc
+index 0595cf8..e9c5a24 100644
+--- a/src/wui/interactive_base.cc
++++ b/src/wui/interactive_base.cc
+@@ -774,9 +774,10 @@ bool InteractiveBase::handle_key(bool const down, 
SDL_Keysym const code) {
+       if (down) {
+               switch (code.sym) {
+               case SDLK_KP_9:
+-                      if (code.mod & KMOD_NUM)
++                      if (code.mod & KMOD_NUM) {
+                               break;
+-              /* no break */
++                      }
++                      FALLS_THROUGH;
+               case SDLK_PAGEUP:
+                       if (upcast(Game, game, &egbase_)) {
+                               if (GameController* const ctrl = 
game->game_controller()) {
+@@ -794,9 +795,10 @@ bool InteractiveBase::handle_key(bool const down, 
SDL_Keysym const code) {
+                       return true;
+ 
+               case SDLK_KP_3:
+-                      if (code.mod & KMOD_NUM)
++                      if (code.mod & KMOD_NUM) {
+                               break;
+-              /* no break */
++                      }
++                      FALLS_THROUGH;
+               case SDLK_PAGEDOWN:
+                       if (upcast(Widelands::Game, game, &egbase_)) {
+                               if (GameController* const ctrl = 
game->game_controller()) {
+diff --git a/src/wui/interactive_player.cc b/src/wui/interactive_player.cc
+index 90264a2..79ee1bc 100644
+--- a/src/wui/interactive_player.cc
++++ b/src/wui/interactive_player.cc
+@@ -320,7 +320,7 @@ bool InteractivePlayer::handle_key(bool const down, 
SDL_Keysym const code) {
+               case SDLK_KP_7:
+                       if (code.mod & KMOD_NUM)
+                               break;
+-              /* no break */
++                      FALLS_THROUGH;
+               case SDLK_HOME:
+                       
move_view_to(game().map().get_starting_pos(player_number_));
+                       return true;
diff --git a/debian/patches/series b/debian/patches/series
index 70c0f36..aaa0a0f 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -1,3 +1,4 @@
 system-wide_minizip
 hurd_PATH_MAX_missing
 dbg_symbols
+gcc7.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-games/widelands.git

_______________________________________________
Pkg-games-commits mailing list
[email protected]
http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

Reply via email to