This is an automated email from the git hooks/post-receive script. arand-guest pushed a commit to branch master in repository lierolibre.
commit 5974d5113c5d04329124322fd6760c611297c2c4 Author: Martin Erik Werner <[email protected]> Date: Mon Aug 17 16:26:01 2015 +0200 Add upstream patch to fix string conversion --- debian/changelog | 8 +- ...ix-conversion-of-basic-string-to-c-string.patch | 226 +++++++++++++++++++++ debian/patches/series | 1 + 3 files changed, 234 insertions(+), 1 deletion(-) diff --git a/debian/changelog b/debian/changelog index 74300cf..9e53814 100644 --- a/debian/changelog +++ b/debian/changelog @@ -1,8 +1,14 @@ lierolibre (0.5-2) UNRELEASED; urgency=low + [ Christoph Egger ] * Handle hurd/kfreebsd as linux. Fixes build there - -- Christoph Egger <[email protected]> Mon, 10 Dec 2012 15:44:17 -0800 + [ Martin Erik Werner ] + * Add upstream patch to fix string conversion with new libstdc++6 cxx11 and + libconfig++9v5 + - debian/patches/fix-conversion-of-basic-string-to-c-string.patch + + -- Martin Erik Werner <[email protected]> Mon, 17 Aug 2015 16:27:12 +0200 lierolibre (0.5-1) unstable; urgency=low diff --git a/debian/patches/fix-conversion-of-basic-string-to-c-string.patch b/debian/patches/fix-conversion-of-basic-string-to-c-string.patch new file mode 100644 index 0000000..21cc5b8 --- /dev/null +++ b/debian/patches/fix-conversion-of-basic-string-to-c-string.patch @@ -0,0 +1,226 @@ +From b9cc6f96a13e24bc219b9f493792f6de44fd206b Mon Sep 17 00:00:00 2001 +From: Martin Erik Werner <[email protected]> +Date: Mon, 17 Aug 2015 15:54:53 +0200 +Subject: [PATCH] Fix conversion of basic string to c string + +An ABI bump in libstdc++6 presumably made it so that +operator[](const char*) does not accept std::__cxx11::basic_string<char> +as an argument, so solve this by explicitly converting the result via +c_str() everywhere. + +This also required some odd messing with templates in order to +specialise them for the conversion. +--- + src/common.cpp | 12 ++++++------ + src/configCompat.cpp | 6 +++--- + src/configHelper.cpp | 36 ++++++++++++++++++++++++++++-------- + src/configHelper.hpp | 2 ++ + src/constants.cpp | 6 +++--- + 5 files changed, 42 insertions(+), 20 deletions(-) + +diff --git a/src/common.cpp b/src/common.cpp +index 2d6ada5..4942b05 100644 +--- a/src/common.cpp ++++ b/src/common.cpp +@@ -162,7 +162,7 @@ void Texts::loadFromCFG(std::string cfgFilePath) + const libconfig::Setting &sgmodes = texts["gameModes"]; + for(int i = 0; i < 4; ++i) + { +- gameModes[i] = (char const*)sgmodes["gameModes" + to_string(i)]; ++ gameModes[i] = (char const*)sgmodes[("gameModes" + to_string(i)).c_str()]; + } + + const libconfig::Setting &sgmspec = texts["gameModeSpec"]; +@@ -181,13 +181,13 @@ void Texts::loadFromCFG(std::string cfgFilePath) + const libconfig::Setting &swstates = texts["weapStates"]; + for(int i = 0; i < 3; ++i) + { +- weapStates[i] = (char const*)swstates["weapStates" + to_string(i)]; ++ weapStates[i] = (char const*)swstates[("weapStates" + to_string(i)).c_str()]; + } + + const libconfig::Setting &sknames = texts["keyNames"]; + for(int i = 1; i < 177; ++i) // First key starts at 1 + { +- keyNames[i] = (char const*)sknames["keyNames" + to_string(i)]; ++ keyNames[i] = (char const*)sknames[("keyNames" + to_string(i)).c_str()]; + } + + selWeap = (char const*)texts["selWeap"]; +@@ -315,8 +315,8 @@ void Common::loadPaletteFromCFG(std::string cfgFilePath) + const libconfig::Setting &scanim = palette["colorAnim"]; + for(int i = 0; i < 4; ++i) + { +- colorAnim[i].from = (int)scanim["colorAnim" + to_string(i) + "from"]; +- colorAnim[i].to = (int)scanim["colorAnim" + to_string(i) + "to"]; ++ colorAnim[i].from = (int)scanim[("colorAnim" + to_string(i) + "from").c_str()]; ++ colorAnim[i].to = (int)scanim[("colorAnim" + to_string(i) + "to").c_str()]; + } + } + +@@ -383,7 +383,7 @@ void Common::loadMaterialsFromCFG(std::string cfgFilePath) + + for(int i = 0; i < 256; ++i) + { +- const libconfig::Setting &smflags = smaterials["flags" + to_string(i)]; ++ const libconfig::Setting &smflags = smaterials[("flags" + to_string(i)).c_str()]; + materials[i].flags = smflags; + } + } +diff --git a/src/configCompat.cpp b/src/configCompat.cpp +index 1aeb262..a72c40f 100644 +--- a/src/configCompat.cpp ++++ b/src/configCompat.cpp +@@ -160,19 +160,19 @@ void Common::loadConstantsFromCFGVer0(string cfgFilePath) + const Setting &vconstants = constants["Values"]; + for(int i = 0; i < MaxC; ++i) + { +- C[i] = (int)vconstants[valueConstantsNamesCFGVer0[i]]; ++ C[i] = (int)vconstants[valueConstantsNamesCFGVer0[i].c_str()]; + } + + const Setting &sconstants = constants["Strings"]; + for(int i = 0; i < MaxS; ++i) + { +- S[i]= (char const*)sconstants[stringConstantsNamesCFGVer0[i]]; ++ S[i]= (char const*)sconstants[stringConstantsNamesCFGVer0[i].c_str()]; + } + + const Setting &hconstants = constants["Hacks"]; + for(int i = 0; i < MaxH; ++i) + { +- H[i] = (bool)hconstants[hackConstantsNamesVer0[i]]; ++ H[i] = (bool)hconstants[hackConstantsNamesVer0[i].c_str()]; + } + } + +diff --git a/src/configHelper.cpp b/src/configHelper.cpp +index fcd1f3f..fd74f0c 100644 +--- a/src/configHelper.cpp ++++ b/src/configHelper.cpp +@@ -54,15 +54,35 @@ template Uint8 ConfigHelper::getValue<Uint8, const Setting, int>(const Setting & + + template Uint8 ConfigHelper::getValue<Uint8, const Setting, char const*>(const Setting &node, char const* index); + +-template Uint8 ConfigHelper::getValue<Uint8, const Setting, string>(const Setting &node, string index); +- + // Non-const + template Uint8 ConfigHelper::getValue<Uint8, Setting, int>(Setting &node, int index); + + template Uint8 ConfigHelper::getValue<Uint8, Setting, char const*>(Setting &node, char const* index); + +-template Uint8 ConfigHelper::getValue<Uint8, Setting, string>(Setting &node, string index); ++// This needs to be specific since string must be manually cast to const char* ++template<> ++Uint8 ConfigHelper::getValue(const Setting &node, string index) ++{ ++ int value = node[index.c_str()]; ++ if(value <= numeric_limits<Uint8>::max() && value >= numeric_limits<Uint8>::min()) ++ { ++ return static_cast<Uint8>(value); ++ } else { ++ throw overflow_error("Config value is too big"); ++ } ++} + ++template<> ++Uint8 ConfigHelper::getValue(Setting &node, string index) ++{ ++ int value = node[index.c_str()]; ++ if(value <= numeric_limits<Uint8>::max() && value >= numeric_limits<Uint8>::min()) ++ { ++ return static_cast<Uint8>(value); ++ } else { ++ throw overflow_error("Config value is too big"); ++ } ++} + + // Since we still need specialisation per value type (Setting::Type), + // no need to templateify these +@@ -72,7 +92,7 @@ void ConfigHelper::put(Setting &node, string variable, string value) + { + node.add(variable, Setting::TypeString) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -83,7 +103,7 @@ void ConfigHelper::put(Setting &node, string variable, int value) + { + node.add(variable, Setting::TypeInt) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -94,7 +114,7 @@ void ConfigHelper::put(Setting &node, string variable, Uint8 value) + { + node.add(variable, Setting::TypeInt) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -105,7 +125,7 @@ void ConfigHelper::put(Setting &node, string variable, bool value) + { + node.add(variable, Setting::TypeBoolean) = value; + } else { +- Setting &var = node[variable]; ++ Setting &var = node[variable.c_str()]; + var = value; + } + } +@@ -135,6 +155,6 @@ Setting& ConfigHelper::getSubgroup(Setting &node, string groupName) + { + node.add(groupName, Setting::TypeGroup); + } +- return node[groupName]; ++ return node[groupName.c_str()]; + } + +diff --git a/src/configHelper.hpp b/src/configHelper.hpp +index 6c4ba33..b7bd343 100644 +--- a/src/configHelper.hpp ++++ b/src/configHelper.hpp +@@ -37,6 +37,8 @@ class ConfigHelper + public: + void putVersion(libconfig::Setting &node, int version); + ++ unsigned char getValue(const libconfig::Setting &node, std::string index); ++ unsigned char getValue(libconfig::Setting &node, std::string index); + template<typename Dest, typename Node, typename Idx> + Dest getValue(Node &node, Idx index); + +diff --git a/src/constants.cpp b/src/constants.cpp +index 7fced6a..cf7bbfc 100644 +--- a/src/constants.cpp ++++ b/src/constants.cpp +@@ -523,19 +523,19 @@ void Common::loadConstantsFromCFG(std::string cfgFilePath) + const libconfig::Setting &vconstants = constants["Values"]; + for(int i = 0; i < MaxC; ++i) + { +- C[i] = (int)vconstants[valueConstantsNames[i]]; ++ C[i] = (int)vconstants[valueConstantsNames[i].c_str()]; + } + + const libconfig::Setting &sconstants = constants["Strings"]; + for(int i = 0; i < MaxS; ++i) + { +- S[i]= (char const*)sconstants[stringConstantsNames[i]]; ++ S[i]= (char const*)sconstants[stringConstantsNames[i].c_str()]; + } + + const libconfig::Setting &hconstants = constants["Hacks"]; + for(int i = 0; i < MaxH; ++i) + { +- H[i] = (bool)hconstants[hackConstantsNames[i]]; ++ H[i] = (bool)hconstants[hackConstantsNames[i].c_str()]; + } + } + +-- +2.4.6 + diff --git a/debian/patches/series b/debian/patches/series index 26238c9..7d86c47 100644 --- a/debian/patches/series +++ b/debian/patches/series @@ -1 +1,2 @@ kfreebsd.patch +fix-conversion-of-basic-string-to-c-string.patch -- Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-games/lierolibre.git _______________________________________________ Pkg-games-commits mailing list [email protected] http://lists.alioth.debian.org/cgi-bin/mailman/listinfo/pkg-games-commits

