Use a MementoCommandBinder for Crossfades so that the undo record can contain details...
[ardour.git] / libs / pbd / locale_guard.cc
index 7d6c0708b8a4cea030b09eacd2eeb75194b7c9d9..30fdeadebae5ee8a9ee44f9f90a55dcec3d78b52 100644 (file)
@@ -8,15 +8,22 @@ using namespace PBD;
 
 LocaleGuard::LocaleGuard (const char* str)
 {
-       old = strdup (setlocale (LC_NUMERIC, NULL));
-       if (strcmp (old, str)) {
-               setlocale (LC_NUMERIC, str);
-       }
+       old = setlocale (LC_NUMERIC, NULL);
+
+        if (old) {
+                old = strdup (old);
+                if (strcmp (old, str)) {
+                        setlocale (LC_NUMERIC, str);
+                }
+        }
 }
 
 LocaleGuard::~LocaleGuard ()
 {
        setlocale (LC_NUMERIC, old);
-       free ((char*)old);
+
+        if (old) {
+                free ((char*)old);
+        }
 }