diff options
author | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-30 15:18:43 +0000 |
---|---|---|
committer | Paul Davis <paul@linuxaudiosystems.com> | 2010-03-30 15:18:43 +0000 |
commit | 14b0ca31bcb62e5b7e9e77634ef9cd2e8cf65800 (patch) | |
tree | 494bcf5351ff29d9981c22450863982b93a91a71 /libs/pbd/locale_guard.cc | |
parent | 10c257039df399fc5a9c383434ee19abab6199ed (diff) |
handle deletion of UI objects between the time that a callback is queued with the UI event loop and the execution of the callback (intrusive, big)
git-svn-id: svn://localhost/ardour2/branches/3.0@6807 d708f5d6-7413-0410-9779-e7cbd77b26cf
Diffstat (limited to 'libs/pbd/locale_guard.cc')
-rw-r--r-- | libs/pbd/locale_guard.cc | 17 |
1 files changed, 12 insertions, 5 deletions
diff --git a/libs/pbd/locale_guard.cc b/libs/pbd/locale_guard.cc index 7d6c0708b8..30fdeadeba 100644 --- a/libs/pbd/locale_guard.cc +++ b/libs/pbd/locale_guard.cc @@ -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); + } } |