From: Tomas Härdin <tomas.har...@codemill.se>

Signed-off-by: Anton Khirnov <an...@khirnov.net>
---
 libavformat/wav.c |   13 +++++++++----
 1 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/libavformat/wav.c b/libavformat/wav.c
index 43a1102..8a8c0b4 100644
--- a/libavformat/wav.c
+++ b/libavformat/wav.c
@@ -336,7 +336,8 @@ static int wav_read_header(AVFormatContext *s,
         size = next_tag(pb, &tag);
         next_tag_ofs = avio_tell(pb) + size;
 
-        if (tag == MKTAG('f', 'm', 't', ' ')) {
+        switch (tag) {
+        case MKTAG('f', 'm', 't', ' '):
             /* only parse the first 'fmt ' tag found */
             if (!got_fmt && (ret = wav_parse_fmt_tag(s, size, &st) < 0)) {
                 return ret;
@@ -344,18 +345,22 @@ static int wav_read_header(AVFormatContext *s,
                 av_log(s, AV_LOG_WARNING, "found more than one 'fmt ' tag\n");
 
             got_fmt = 1;
-        } else if (tag == MKTAG('d', 'a', 't', 'a')) {
+            break;
+        case MKTAG('d', 'a', 't', 'a'):
             if (!got_fmt) {
                 av_log(s, AV_LOG_ERROR, "found no 'fmt ' tag before the 'data' 
tag\n");
                 return AVERROR_INVALIDDATA;
             }
 
-            break;
-        }else if (tag == MKTAG('f','a','c','t') && !sample_count){
+            goto break_loop;
+        case MKTAG('f','a','c','t'):
+            if(!sample_count)
             sample_count = avio_rl32(pb);
+            break;
         }
         avio_seek(pb, next_tag_ofs, SEEK_SET);
     }
+break_loop:
     if (rf64)
         size = data_size;
     if (size < 0)
-- 
1.7.5.3

_______________________________________________
libav-devel mailing list
libav-devel@libav.org
https://lists.libav.org/mailman/listinfo/libav-devel

Reply via email to