[vlc-commits] Create the C/POSIX locale on need-basis in message subsystem
Rémi Denis-Courmont
git at videolan.org
Thu Aug 18 16:30:21 CEST 2011
vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Aug 18 17:18:22 2011 +0300| [73b30f82b1b1f65826b356c36bfdcaa51b3e14ea] | committer: Rémi Denis-Courmont
Create the C/POSIX locale on need-basis in message subsystem
The overhead is negligible, and this avoids depending on the message
bank.
> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=73b30f82b1b1f65826b356c36bfdcaa51b3e14ea
---
src/misc/messages.c | 18 ++++++++----------
1 files changed, 8 insertions(+), 10 deletions(-)
diff --git a/src/misc/messages.c b/src/misc/messages.c
index f1d7078..e397c71 100644
--- a/src/misc/messages.c
+++ b/src/misc/messages.c
@@ -88,7 +88,6 @@ struct msg_bank_t
int i_sub;
msg_subscription_t **pp_sub;
- locale_t locale; /**< C locale for error messages */
vlc_dictionary_t enabled_objects; ///< Enabled objects
bool all_objects_enabled; ///< Should we print all objects?
};
@@ -108,8 +107,6 @@ msg_bank_t *msg_Create (void)
bank->i_sub = 0;
bank->pp_sub = NULL;
- /* C locale to get error messages in English in the logs */
- bank->locale = newlocale (LC_MESSAGES_MASK, "C", (locale_t)0);
return bank;
}
@@ -160,9 +157,6 @@ void msg_Destroy (msg_bank_t *bank)
if (unlikely(bank->i_sub != 0))
fputs ("stale interface subscribers (LibVLC might crash)\n", stderr);
- if (bank->locale != (locale_t)0)
- freelocale (bank->locale);
-
vlc_dictionary_clear (&bank->enabled_objects, NULL, NULL);
vlc_rwlock_destroy (&bank->lock);
@@ -270,7 +264,10 @@ void msg_GenericVa (vlc_object_t *p_this, int i_type,
return;
msg_bank_t *bank = libvlc_bank (p_this->p_libvlc);
- locale_t locale = uselocale (bank->locale);
+
+ /* C locale to get error messages in English in the logs */
+ locale_t c = newlocale (LC_MESSAGES_MASK, "C", (locale_t)0);
+ locale_t locale = uselocale (c);
#ifndef __GLIBC__
/* Expand %m to strerror(errno) - only once */
@@ -334,7 +331,10 @@ void msg_GenericVa (vlc_object_t *p_this, int i_type,
psz_str = NULL;
va_end( args );
- if( psz_str == NULL )
+ uselocale (locale);
+ freelocale (c);
+
+ if (unlikely(psz_str == NULL))
{
int canc = vlc_savecancel (); /* Do not print half of a message... */
#ifdef __GLIBC__
@@ -357,10 +357,8 @@ void msg_GenericVa (vlc_object_t *p_this, int i_type,
va_end( args );
fputs( "\n", stderr );
vlc_restorecancel (canc);
- uselocale (locale);
return;
}
- uselocale (locale);
/* Fill message information fields */
msg_item_t msg;
More information about the vlc-commits
mailing list