Blob Blame History Raw
From a43c9ca4e0fb600d425f50d11287f7c4fddee5f3 Mon Sep 17 00:00:00 2001
From: Chris Lumens <clumens@redhat.com>
Date: Fri, 14 Dec 2012 13:06:43 -0500
Subject: [PATCH 01/03] Do not traceback when calling setlocale (#875354).

This is just a debugging luxury.  It's not worth additional tracebacks.
---
 src/parted/decorators.py | 13 +++++++++++--
 1 file changed, 11 insertions(+), 2 deletions(-)

diff --git a/src/parted/decorators.py b/src/parted/decorators.py
index 2b583ad..737f72c 100644
--- a/src/parted/decorators.py
+++ b/src/parted/decorators.py
@@ -24,13 +24,22 @@ import locale
 import functools
 
 def localeC(fn):
+    # setlocale is not thread-safe, and anaconda (at least) may call this from
+    # another thread.  This is just a luxury to have untranslated tracebacks,
+    # so it's not worth tracebacking itself.
+    def _setlocale(l):
+        try:
+            locale.setlocale(locale.LC_MESSAGES, l)
+        except:
+            pass
+
     @functools.wraps(fn)
     def new(*args, **kwds):
         oldlocale = locale.getlocale(locale.LC_MESSAGES)
-        locale.setlocale(locale.LC_MESSAGES, 'C')
+        _setlocale('C')
         try:
             ret = fn(*args, **kwds)
         finally:
-            locale.setlocale(locale.LC_MESSAGES, oldlocale)
+            _setlocale(oldlocale)
         return ret
     return new
-- 
1.8.1.2