From 6a958980388727048effaea081b68c8debfaa6df Mon Sep 17 00:00:00 2001 From: Charles Kerr Date: Sun, 11 Apr 2010 19:18:30 +0200 Subject: decoder/ffmpeg: fix crash on startup in mpd_ffmpeg_log_callback() What's happening is the `ptr' argument to that function is NULL for me every time. `ptr' is unconditionally dereferenced to generate a log message, and this is where mpd crashes. Attached is a simple patch that tests for NULL and omits the log. With this patch the crash disappeared and mpd went back to working well. --- src/decoder/ffmpeg_decoder_plugin.c | 13 +++++++++---- 1 file changed, 9 insertions(+), 4 deletions(-) (limited to 'src/decoder') diff --git a/src/decoder/ffmpeg_decoder_plugin.c b/src/decoder/ffmpeg_decoder_plugin.c index d4d6224d2..4f956f555 100644 --- a/src/decoder/ffmpeg_decoder_plugin.c +++ b/src/decoder/ffmpeg_decoder_plugin.c @@ -67,11 +67,16 @@ static void mpd_ffmpeg_log_callback(G_GNUC_UNUSED void *ptr, int level, const char *fmt, va_list vl) { - const AVClass *cls = *(const AVClass *const*)ptr; - char *domain = g_strconcat(G_LOG_DOMAIN, "/", cls->item_name(ptr), NULL); + const AVClass * cls = NULL; - g_logv(domain, level_ffmpeg_to_glib(level), fmt, vl); - g_free(domain); + if (ptr != NULL) + cls = *(const AVClass *const*)ptr; + + if (cls != NULL) { + char *domain = g_strconcat(G_LOG_DOMAIN, "/", cls->item_name(ptr), NULL); + g_logv(domain, level_ffmpeg_to_glib(level), fmt, vl); + g_free(domain); + } } #endif /* !OLD_FFMPEG_INCLUDES */ -- cgit v1.2.3