changeset 12411:7c9d711a4201 libavcodec

msmpeg4v1: fix undefined behaviour in msmpeg4_decode_picture_header() Because the order of evaluation of subexpressions is undefined, two get_bits() calls may not be part of the same expression. In this specific case, using get_bits_long() is simpler. This fixes msmpeg4v1 decoding with armcc.
author mru
date Tue, 24 Aug 2010 15:40:57 +0000
parents 7cf900245fce
children b31e6ace12f6
files msmpeg4.c
diffstat 1 files changed, 1 insertions(+), 2 deletions(-) [+]
line wrap: on
line diff
--- a/msmpeg4.c	Tue Aug 24 15:21:27 2010 +0000
+++ b/msmpeg4.c	Tue Aug 24 15:40:57 2010 +0000
@@ -1395,8 +1395,7 @@
 #endif
 
     if(s->msmpeg4_version==1){
-        int start_code;
-        start_code = (get_bits(&s->gb, 16)<<16) | get_bits(&s->gb, 16);
+        int start_code = get_bits_long(&s->gb, 32);
         if(start_code!=0x00000100){
             av_log(s->avctx, AV_LOG_ERROR, "invalid startcode\n");
             return -1;