avformat: refactor avformat_close_input
authorLuca Barbato <lu_zero@gentoo.org>
Tue, 4 Sep 2012 14:05:28 +0000 (16:05 +0200)
committerLuca Barbato <lu_zero@gentoo.org>
Fri, 14 Sep 2012 12:26:27 +0000 (14:26 +0200)
Do not crash if the input format is not allocated yet.

libavformat/utils.c

index 3a829a9..c0da7f2 100644 (file)
@@ -2702,12 +2702,21 @@ void av_close_input_file(AVFormatContext *s)
 void avformat_close_input(AVFormatContext **ps)
 {
     AVFormatContext *s = *ps;
-    AVIOContext *pb = (s->iformat->flags & AVFMT_NOFILE) || (s->flags & AVFMT_FLAG_CUSTOM_IO) ?
-                       NULL : s->pb;
+    AVIOContext *pb = s->pb;
+
+    if ((s->iformat && s->iformat->flags & AVFMT_NOFILE) &&
+        (s->flags & AVFMT_FLAG_CUSTOM_IO))
+        pb = NULL;
+
     flush_packet_queue(s);
-    if (s->iformat->read_close)
-        s->iformat->read_close(s);
+
+    if (s->iformat) {
+        if (s->iformat->read_close)
+            s->iformat->read_close(s);
+    }
+
     avformat_free_context(s);
+
     *ps = NULL;
 
     avio_close(pb);