[vlc-devel] commit: libavutil callback cannot assume it has a VLC object ( Rémi Denis-Courmont )

git version control git at videolan.org
Thu Mar 12 15:57:55 CET 2009


vlc | branch: master | Rémi Denis-Courmont <remi at remlab.net> | Thu Mar 12 16:49:37 2009 +0200| [9f84f025ab2a6e0d8d9da2ba520652ac8f657524] | committer: Rémi Denis-Courmont 

libavutil callback cannot assume it has a VLC object

This fixes a crash from the avformat (de)mux.

> http://git.videolan.org/gitweb.cgi/vlc.git/?a=commit;h=9f84f025ab2a6e0d8d9da2ba520652ac8f657524
---

 modules/codec/avcodec/avutil.h |   36 ++++++++----------------------------
 1 files changed, 8 insertions(+), 28 deletions(-)

diff --git a/modules/codec/avcodec/avutil.h b/modules/codec/avcodec/avutil.h
index 08b1156..48a5222 100644
--- a/modules/codec/avcodec/avutil.h
+++ b/modules/codec/avcodec/avutil.h
@@ -28,12 +28,8 @@
 static inline void LibavutilCallback( void *p_opaque, int i_level,
                         const char *psz_format, va_list va )
 {
-    int i_vlc_level;
     AVCodecContext *p_avctx = (AVCodecContext *)p_opaque;
     const AVClass *p_avc;
-    vlc_object_t *p_this;
-    char *psz_new_format;
-    const char *psz_item_name;
 
     p_avc = p_avctx ? p_avctx->av_class : 0;
 
@@ -48,33 +44,17 @@ static inline void LibavutilCallback( void *p_opaque, int i_level,
     }
 #undef cln
 
-    p_this = (vlc_object_t *)p_avctx->opaque;
-
     switch( i_level )
     {
-    case AV_LOG_QUIET:
-        i_vlc_level = VLC_MSG_ERR;
-        break;
-    case AV_LOG_ERROR:
-        i_vlc_level = VLC_MSG_WARN;
-        break;
-    case AV_LOG_INFO:
-        i_vlc_level = VLC_MSG_DBG;
-        break;
     case AV_LOG_DEBUG:
+    case AV_LOG_INFO:
         /* Print debug messages if they were requested */
-        if( p_avctx->debug ) vfprintf( stderr, psz_format, va );
-        return;
-    default:
-        return;
-    }
+        if( !p_avctx->debug )
+            break;
 
-    psz_item_name = p_avc->item_name(p_opaque);
-    psz_new_format = malloc( strlen(psz_format) + strlen(psz_item_name)
-                              + 18 + 5 );
-    snprintf( psz_new_format, strlen(psz_format) + strlen(psz_item_name)
-              + 18 + 5, "%s (%s@%p)", psz_format, p_avc->item_name(p_opaque), p_opaque );
-    msg_GenericVa( p_this, i_vlc_level,
-                    MODULE_STRING, psz_new_format, va );
-    free( psz_new_format );
+    case AV_LOG_ERROR:
+    case AV_LOG_QUIET:
+        vfprintf( stderr, psz_format, va );
+        break;
+    }
 }




More information about the vlc-devel mailing list