* \param p_exception the exception to query
* \return 0 if no exception raised, 1 else
*/
-VLC_PUBLIC_API int libvlc_exception_raised( libvlc_exception_t *p_exception );
+VLC_PUBLIC_API int
+libvlc_exception_raised( const libvlc_exception_t *p_exception );
/**
* Raise an exception
* \param p_exception the exception to raise
* \param psz_message the exception message
*/
-VLC_PUBLIC_API void libvlc_exception_raise( libvlc_exception_t *p_exception, const char *psz_format, ... );
+VLC_PUBLIC_API void
+libvlc_exception_raise( libvlc_exception_t *p_exception,
+ const char *psz_format, ... );
/**
* Clear an exception object so it can be reused.
* \return the exception message or NULL if not applicable (exception not raised
* for example)
*/
-VLC_PUBLIC_API char* libvlc_exception_get_message( libvlc_exception_t *p_exception );
+VLC_PUBLIC_API const char *
+libvlc_exception_get_message( const libvlc_exception_t *p_exception );
/**@} */
libvlc_MediaInstancePaused,
libvlc_MediaInstanceReachedEnd,
libvlc_MediaInstancePositionChanged,
-
+
libvlc_MediaListItemAdded,
libvlc_MediaListItemDeleted,
#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;