Fix synfig::ChangleLocale class.
authorCarlos Lopez <genetita@gmail.com>
Sun, 28 Nov 2010 11:26:47 +0000 (12:26 +0100)
committerCarlos Lopez <genetita@gmail.com>
Sun, 28 Nov 2010 11:26:47 +0000 (12:26 +0100)
It wasn't backing up the old locale so it didn't restore it back when the class destructor was called.

synfig-core/src/synfig/general.h

index 639eb51..0442918 100644 (file)
 namespace synfig {
 
 class ChangeLocale {
-    const String previous;
-    const int category;
+       const String previous;
+       const int category;
 public:
-    ChangeLocale(int category, const char *locale):
-        previous(setlocale(category,locale)),category(category)
-    {
-    }
-    ~ChangeLocale() {
-        setlocale(category,previous.c_str());
-    }
+       ChangeLocale(int category, const char *locale):
+       // This backups the old locale
+       previous(setlocale(category,NULL)),category(category)
+       {
+               // This effectively changes the locale
+               setlocale(category, locale);
+       }
+       ~ChangeLocale() {
+               // This restores the locale
+               setlocale(category,previous.c_str());
+       }
 };
 
 /*!    \class ProgressCallback