Browse Source

ignore std::locale exeception on non-existent "" locale

In 8b79c94af7 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.
tags/debian/1.3_exp2
David Kalnischkies 5 years ago
parent
commit
62600666d2
3 changed files with 12 additions and 2 deletions
  1. +5
    -1
      apt-private/private-main.cc
  2. +5
    -1
      methods/aptmethod.h
  3. +2
    -0
      test/integration/test-00-commands-have-help

+ 5
- 1
apt-private/private-main.cc View File

@@ -18,7 +18,11 @@

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:


+ 5
- 1
methods/aptmethod.h View 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, "");
}
}
};



+ 2
- 0
test/integration/test-00-commands-have-help View File

@@ -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


Loading…
Cancel
Save