Browse Source

put_bits: fix invalid shift by 32 in flush_put_bits()

If flush_put_bits() is called when the 32-bit buffer is empty,
e.g. after writing a multiple of 32 bits, and invalid shift by
32 is performed.  Since flush_put_bits() is called infrequently,
this additional check should have negligible performance impact.

Signed-off-by: Mans Rullgard <mans@mansr.com>
(cherry picked from commit ac6eab1496)

Signed-off-by: Anton Khirnov <anton@khirnov.net>
tags/n0.8.11
Mans Rullgard Reinhard Tartler 14 years ago
parent
commit
e52e85ac3a
1 changed files with 2 additions and 1 deletions
  1. +2
    -1
      libavcodec/put_bits.h

+ 2
- 1
libavcodec/put_bits.h View File

@@ -100,7 +100,8 @@ static inline void flush_put_bits(PutBitContext *s)
align_put_bits(s);
#else
#ifndef BITSTREAM_WRITER_LE
s->bit_buf<<= s->bit_left;
if (s->bit_left < 32)
s->bit_buf<<= s->bit_left;
#endif
while (s->bit_left < 32) {
/* XXX: should test end of buffer */


Loading…
Cancel
Save