# HG changeset patch # User alexc # Date 1282666225 0 # Node ID b31e6ace12f65b5fdb0292c82ef14142912dc68b # Parent 7c9d711a4201826da4850f2498c3e5e66acdff6b Fix undefined expressions that use multiple calls to get_bits(). Because the order of evaluation of subexpressions is undefined, two get_bits() calls may not be part of the same expression. See also r24902. diff -r 7c9d711a4201 -r b31e6ace12f6 mjpegdec.c --- a/mjpegdec.c Tue Aug 24 15:40:57 2010 +0000 +++ b/mjpegdec.c Tue Aug 24 16:10:25 2010 +0000 @@ -1027,7 +1027,7 @@ if(8*len + get_bits_count(&s->gb) > s->gb.size_in_bits) return -1; - id = (get_bits(&s->gb, 16) << 16) | get_bits(&s->gb, 16); + id = get_bits_long(&s->gb, 32); id = av_be2ne32(id); len -= 6; @@ -1134,7 +1134,7 @@ /* Apple MJPEG-A */ if ((s->start_code == APP1) && (len > (0x28 - 8))) { - id = (get_bits(&s->gb, 16) << 16) | get_bits(&s->gb, 16); + id = get_bits_long(&s->gb, 32); id = av_be2ne32(id); len -= 4; if (id == AV_RL32("mjpg")) /* Apple MJPEG-A */ diff -r 7c9d711a4201 -r b31e6ace12f6 qdm2.c --- a/qdm2.c Tue Aug 24 15:40:57 2010 +0000 +++ b/qdm2.c Tue Aug 24 16:10:25 2010 +0000 @@ -1209,7 +1209,8 @@ init_get_bits(&gb, header.data, header.size*8); if (header.type == 2 || header.type == 4 || header.type == 5) { - int csum = 257 * get_bits(&gb, 8) + 2 * get_bits(&gb, 8); + int csum = 257 * get_bits(&gb, 8); + csum += 2 * get_bits(&gb, 8); csum = qdm2_packet_checksum(q->compressed_data, q->checksum_size, csum);