Mercurial > libavcodec.hg
comparison msmpeg4.c @ 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 | c35d7bc64882 |
| children |
comparison
equal
deleted
inserted
replaced
| 12410:7cf900245fce | 12411:7c9d711a4201 |
|---|---|
| 1393 return -1; | 1393 return -1; |
| 1394 } | 1394 } |
| 1395 #endif | 1395 #endif |
| 1396 | 1396 |
| 1397 if(s->msmpeg4_version==1){ | 1397 if(s->msmpeg4_version==1){ |
| 1398 int start_code; | 1398 int start_code = get_bits_long(&s->gb, 32); |
| 1399 start_code = (get_bits(&s->gb, 16)<<16) | get_bits(&s->gb, 16); | |
| 1400 if(start_code!=0x00000100){ | 1399 if(start_code!=0x00000100){ |
| 1401 av_log(s->avctx, AV_LOG_ERROR, "invalid startcode\n"); | 1400 av_log(s->avctx, AV_LOG_ERROR, "invalid startcode\n"); |
| 1402 return -1; | 1401 return -1; |
| 1403 } | 1402 } |
| 1404 | 1403 |
