#include <vlc_interface.h>
+static const char nomemstr[] = "Insufficient memory";
+
/*************************************************************************
* Exceptions handling
*************************************************************************/
void libvlc_exception_clear( libvlc_exception_t *p_exception )
{
- if( p_exception->psz_message )
+ if( p_exception->psz_message != nomemstr )
free( p_exception->psz_message );
p_exception->psz_message = NULL;
p_exception->b_raised = 0;
}
-int libvlc_exception_raised( libvlc_exception_t *p_exception )
+int libvlc_exception_raised( const libvlc_exception_t *p_exception )
{
return (NULL != p_exception) && p_exception->b_raised;
}
-char *libvlc_exception_get_message( libvlc_exception_t *p_exception )
+const char *
+libvlc_exception_get_message( const libvlc_exception_t *p_exception )
{
if( p_exception->b_raised == 1 && p_exception->psz_message )
{
if( p_exception == NULL ) return;
/* remove previous exception if it wasn't cleared */
- if( p_exception->b_raised && p_exception->psz_message )
- free(p_exception->psz_message);
+ libvlc_exception_clear( p_exception );
va_start( args, psz_format );
if( vasprintf( &p_exception->psz_message, psz_format, args ) == -1)
- p_exception->psz_message = NULL;
+ p_exception->psz_message = (char *)nomemstr;
va_end( args );
p_exception->b_raised = 1;
}
-libvlc_instance_t * libvlc_new( int argc, char **argv,
+libvlc_instance_t * libvlc_new( int argc, const char *const *argv,
libvlc_exception_t *p_e )
{
libvlc_instance_t *p_new;
if( !p_new ) RAISENULL( "Out of memory" );
/** \todo Look for interface settings. If we don't have any, add -I dummy */
- /* Because we probably don't want a GUI by default */
+ /* Because we probably don't want a GUI by default */
if( libvlc_InternalInit( p_libvlc_int, argc, argv ) )
RAISENULL( "VLC initialization failed" );
p_new->p_callback_list = NULL;
vlc_mutex_init(p_libvlc_int, &p_new->instance_lock);
vlc_mutex_init(p_libvlc_int, &p_new->event_callback_lock);
-
+
libvlc_event_init(p_new, p_e);
return p_new;