}
i_ret = libvlc_exception_raised (&ex);
if( i_ret )
- fprintf( stderr, "%s\n", libvlc_exception_get_message( &ex));
+ fprintf( stderr, "%s\n", libvlc_errmsg() );
libvlc_exception_clear (&ex);
libvlc_exception_clear (&dummy);
*/
VLC_PUBLIC_API void libvlc_exception_clear( libvlc_exception_t * );
-/**
- * Get an exception's message.
- *
- * \param p_exception the exception to query
- * \return the exception message or NULL if not applicable (exception not
- * raised, for example)
- */
-VLC_PUBLIC_API const char *
-libvlc_exception_get_message( const libvlc_exception_t *p_exception );
-
/**@} */
/*****************************************************************************
typedef struct libvlc_exception_t
{
int b_raised;
- char *psz_message;
} libvlc_exception_t;
/**@} */
{
if( ! libvlc_exception_raised(ex) )
return NOERROR;
- _p_instance->setErrorInfo(IID_IVLCControl,
- libvlc_exception_get_message(ex));
+ _p_instance->setErrorInfo(IID_IVLCControl, libvlc_errmsg());
libvlc_exception_clear(ex);
return E_FAIL;
}
{
if( libvlc_exception_raised(ex) )
{
- p->setErrorInfo(riid,libvlc_exception_get_message(ex));
+ p->setErrorInfo(riid,libvlc_errmsg());
libvlc_exception_clear(ex);
return E_FAIL;
}
NSException* libvlcException = [NSException
exceptionWithName:@"LibVLCException"
reason:[NSString stringWithFormat:@"libvlc has thrown us an error: %s (%s:%d %s)",
- libvlc_exception_get_message( ex ), file, line_number, function]
+ libvlc_errmsg(), file, line_number, function]
userInfo:nil];
libvlc_exception_clear( ex );
@throw libvlcException;
#define RETURN_ON_EXCEPTION(this,ex) \
do { if( libvlc_exception_raised(&ex) ) \
{ \
- NPN_SetException(this, libvlc_exception_get_message(&ex)); \
+ NPN_SetException(this, libvlc_errmsg()); \
libvlc_exception_clear(&ex); \
return INVOKERESULT_GENERIC_ERROR; \
} } while(false)
{
if( index != ID_input_state )
{
- NPN_SetException(this, libvlc_exception_get_message(&ex));
+ NPN_SetException(this, libvlc_errmsg());
libvlc_exception_clear(&ex);
return INVOKERESULT_GENERIC_ERROR;
}
void libvlc_exception_init( libvlc_exception_t *p_exception )
{
p_exception->b_raised = 0;
- p_exception->psz_message = NULL;
}
void libvlc_exception_clear( libvlc_exception_t *p_exception )
{
if( NULL == p_exception )
return;
- if( p_exception->psz_message != nomemstr )
- free( p_exception->psz_message );
- p_exception->psz_message = NULL;
p_exception->b_raised = 0;
+ libvlc_clearerr ();
}
int libvlc_exception_raised( const libvlc_exception_t *p_exception )
return (NULL != p_exception) && p_exception->b_raised;
}
-const char *
-libvlc_exception_get_message( const libvlc_exception_t *p_exception )
-{
- if( p_exception->b_raised == 1 && p_exception->psz_message )
- {
- return p_exception->psz_message;
- }
- return NULL;
-}
-
static void libvlc_exception_not_handled( const char *psz )
{
fprintf( stderr, "*** LibVLC Exception not handled: %s\nSet a breakpoint in '%s' to debug.\n",
const char *psz_format, ... )
{
va_list args;
- char * psz;
+
+ /* Make sure that there is no unnoticed previous exception */
+ if( p_exception && p_exception->b_raised )
+ {
+ libvlc_exception_not_handled( libvlc_errmsg() );
+ libvlc_exception_clear( p_exception );
+ }
/* Unformat-ize the message */
va_start( args, psz_format );
- if( vasprintf( &psz, psz_format, args ) == -1)
- psz = (char *)nomemstr;
+ libvlc_vprinterr( psz_format, args );
va_end( args );
/* Does caller care about exceptions ? */
if( p_exception == NULL ) {
/* Print something, so that lazy third-parties can easily
* notice that something may have gone unnoticedly wrong */
- libvlc_exception_not_handled( psz );
- if( psz != nomemstr )
- free( psz );
+ libvlc_exception_not_handled( libvlc_errmsg() );
return;
}
- /* Make sure that there is no unnoticed previous exception */
- if( p_exception->b_raised )
- {
- libvlc_exception_not_handled( p_exception->psz_message );
- libvlc_exception_clear( p_exception );
- }
- p_exception->psz_message = psz;
p_exception->b_raised = 1;
}
if( libvlc_exception_raised( &ex ) )
{
free( retval );
- RAISE( mediacontrol_InternalException,
- libvlc_exception_get_message( &ex ) );
+ RAISE( mediacontrol_InternalException, libvlc_errmsg( ) );
libvlc_exception_clear( &ex );
return NULL;
}
if( libvlc_exception_raised( &ex ) )
{
free( retval );
- RAISE( mediacontrol_InternalException,
- libvlc_exception_get_message( &ex ) );
+ RAISE( mediacontrol_InternalException, libvlc_errmsg() );
libvlc_exception_clear( &ex );
return NULL;
}
#define RAISE_VOID( c, m ) do{ RAISE( c, m ); return; } while(0)
#define HANDLE_LIBVLC_EXCEPTION_VOID( e ) if( libvlc_exception_raised( e ) ) { \
- RAISE( mediacontrol_InternalException, libvlc_exception_get_message( e )); \
+ RAISE( mediacontrol_InternalException, libvlc_errmsg()); \
libvlc_exception_clear( e ); \
return; }
#define HANDLE_LIBVLC_EXCEPTION_NULL( e ) if( libvlc_exception_raised( e ) ) { \
- RAISE( mediacontrol_InternalException, libvlc_exception_get_message( e )); \
+ RAISE( mediacontrol_InternalException, libvlc_errmsg()); \
libvlc_exception_clear( e ); \
return NULL; }
#define HANDLE_LIBVLC_EXCEPTION_ZERO( e ) if( libvlc_exception_raised( e ) ) { \
- RAISE( mediacontrol_InternalException, libvlc_exception_get_message( e )); \
+ RAISE( mediacontrol_InternalException, libvlc_errmsg()); \
libvlc_exception_clear( e ); \
return 0; }
libvlc_event_send
libvlc_event_type_name
libvlc_exception_clear
-libvlc_exception_get_message
libvlc_exception_init
libvlc_exception_raise
libvlc_exception_raised
{
if (libvlc_exception_raised (&ex))
{
- fprintf (stderr, "Exception: %s\n",
- libvlc_exception_get_message (&ex));
+ fprintf (stderr, "Exception: %s\n", libvlc_errmsg ());
abort ();
}
-
- assert (libvlc_exception_get_message (&ex) == NULL);
libvlc_exception_clear (&ex);
}