]> git.saurik.com Git - apt.git/commitdiff
ignore std::locale exeception on non-existent "" locale
authorDavid Kalnischkies <david@kalnischkies.de>
Thu, 2 Jun 2016 10:44:58 +0000 (12:44 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Thu, 2 Jun 2016 11:35:28 +0000 (13:35 +0200)
In 8b79c94af7f7cf2e5e5342294bc6e5a908cacabf changing to usage of C++ way
of setting the locale causes us to be terminated in case of usage of an
ungenerated locale as LC_ALL (or similar) – but we don't want to fail
here, we just want to carry on as before with setlocale which we call in
that case just for good measure.

apt-private/private-main.cc
methods/aptmethod.h
test/integration/test-00-commands-have-help

index 0075f813f35fda73a97a2c4652096df631cf34ba..d6517dd2a7acd3d89c1ec90e782753b17d19a06c 100644 (file)
 
 void InitLocale(APT_CMD const binary)                          /*{{{*/
 {
-   std::locale::global(std::locale(""));
+   try {
+      std::locale::global(std::locale(""));
+   } catch (...) {
+      setlocale(LC_ALL, "");
+   }
    switch(binary)
    {
       case APT_CMD::APT:
index cf3496e4547c2ada2b2f990f23ecd0296eadf3b0..bef61a8bc6c8a32a60952cf3c5af9233832d5087 100644 (file)
@@ -46,7 +46,11 @@ public:
    aptMethod(char const * const Binary, char const * const Ver, unsigned long const Flags) :
       pkgAcqMethod(Ver, Flags), Binary(Binary)
    {
-      std::locale::global(std::locale(""));
+      try {
+        std::locale::global(std::locale(""));
+      } catch (...) {
+        setlocale(LC_ALL, "");
+      }
    }
 };
 
index 9d66f92218c51c9dceb5e6b2c174f9d648a75d4e..c7d794b34fef219bb295a2ba767d8126c0db0a1f 100755 (executable)
@@ -11,6 +11,8 @@ configarchitecture 'amd64'
 # but it also checks if the binary can find all methods in the library.
 # The later is quite handy for manual testing of non-abibreaking changes
 export LD_BIND_NOW=1
+# german variant of klingon used for testing usage of non-existent l10n
+export LC_ALL=tlh_DE.UTF-8
 
 checkversionmessage() {
        testsuccess grep '^apt .* (' ${1}-help.output