File linking.patch of Package libappimage

From 5939f5976bd89af1a8c9964508c640410b18333c Mon Sep 17 00:00:00 2001
From: TheAssassin <theassassin@assassinate-you.net>
Date: Thu, 17 Sep 2020 19:19:33 +0200
Subject: [PATCH] Make string sanitizer strictly C++11

CC #147
---
 src/libappimage/utils/StringSanitizer.cpp | 18 ++++++++++++++++--
 src/libappimage/utils/StringSanitizer.h   | 17 ++++-------------
 2 files changed, 20 insertions(+), 15 deletions(-)

diff --git a/src/libappimage/utils/StringSanitizer.cpp b/src/libappimage/utils/StringSanitizer.cpp
index fee9f7d..ab155aa 100644
--- a/src/libappimage/utils/StringSanitizer.cpp
+++ b/src/libappimage/utils/StringSanitizer.cpp
@@ -6,7 +6,21 @@
 // local includes
 #include "StringSanitizer.h"
 
-StringSanitizer::StringSanitizer(std::string  input) : input_(std::move(input)) {};
+// initialize static const variables
+const std::initializer_list<std::string::value_type> StringSanitizer::asciiLetters_ = {
+    'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
+    'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
+    'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
+    'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
+};
+const std::initializer_list<std::string::value_type> StringSanitizer::asciiDigits_ = {
+    '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
+};
+const std::initializer_list<std::string::value_type> StringSanitizer::pathSafeChars_ = {
+    '.', '-', '_'
+};
+
+StringSanitizer::StringSanitizer(std::string input) : input_(std::move(input)) {};
 
 std::string StringSanitizer::sanitizeForPath() {
     // output buffer
@@ -15,7 +29,7 @@ std::string StringSanitizer::sanitizeForPath() {
 
     // first of all, we compose an alphabet of safe characters
     // all characters not contained in this alphabet will be replaced by some safe character, e.g., an underscore (_)
-    std::vector<std::string::value_type> safeAlphabet{asciiDigits_.size() + asciiLetters_.size() + pathSafeChars_.size()};
+    std::vector<std::string::value_type> safeAlphabet(asciiDigits_.size() + asciiLetters_.size() + pathSafeChars_.size());
     for (const auto& partialAlphabet : {asciiDigits_, asciiLetters_, pathSafeChars_}) {
         std::copy(partialAlphabet.begin(), partialAlphabet.end(), std::back_inserter(safeAlphabet));
     }
diff --git a/src/libappimage/utils/StringSanitizer.h b/src/libappimage/utils/StringSanitizer.h
index 5301ec1..69dc24b 100644
--- a/src/libappimage/utils/StringSanitizer.h
+++ b/src/libappimage/utils/StringSanitizer.h
@@ -11,25 +11,16 @@ class StringSanitizer {
     std::string input_;
 
     // these three lists can be used to compose alphabets for sanitization
-    static constexpr std::initializer_list<std::string::value_type> asciiLetters_ = {
-        'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm',
-        'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z',
-        'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M',
-        'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z',
-    };
-    static constexpr std::initializer_list<std::string::value_type> asciiDigits_ = {
-        '0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
-    };
-    static constexpr std::initializer_list<std::string::value_type> pathSafeChars_ = {
-        '.', '-', '_'
-    };
+    static const std::initializer_list<std::string::value_type> asciiLetters_;
+    static const std::initializer_list<std::string::value_type> asciiDigits_;
+    static const std::initializer_list<std::string::value_type> pathSafeChars_;
 
 public:
     /**
      * Default constructor.
      * @param input string to sanitize
      */
-    explicit StringSanitizer(std::string  input);
+    explicit StringSanitizer(std::string input);
 
     /**
      * Sanitizes given string so it is safe to embed it in a path.
openSUSE Build Service is sponsored by