Commit 6ae117da authored by Rémi Denis-Courmont's avatar Rémi Denis-Courmont

libvlc: fix potentially leaked error message

parent 99fffd13
......@@ -30,8 +30,10 @@ static const char oom[] = "Out of memory";
/* TODO: use only one thread-specific key for whole libvlc */
static vlc_threadvar_t context;
static vlc_mutex_t lock = VLC_STATIC_MUTEX;
static uintptr_t refs = 0;
static char *get_error (void)
{
return vlc_threadvar_get (context);
}
static void free_msg (void *msg)
{
......@@ -39,6 +41,14 @@ static void free_msg (void *msg)
free (msg);
}
static void free_error (void)
{
free_msg (get_error ());
}
static vlc_mutex_t lock = VLC_STATIC_MUTEX;
static uintptr_t refs = 0;
void libvlc_threads_init (void)
{
vlc_mutex_lock (&lock);
......@@ -52,20 +62,13 @@ void libvlc_threads_deinit (void)
vlc_mutex_lock (&lock);
assert (refs > 0);
if (--refs == 0)
{
free_error ();
vlc_threadvar_delete (&context);
}
vlc_mutex_unlock (&lock);
}
static char *get_error (void)
{
return vlc_threadvar_get (context);
}
static void free_error (void)
{
free_msg (get_error ());
}
/**
* Gets a human-readable error message for the last LibVLC error in the calling
* thread. The resulting string is valid until another error occurs (at least
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment