diff options
| author | 2024-02-25 03:38:15 +0900 | |
|---|---|---|
| committer | 2024-02-25 05:38:15 +1100 | |
| commit | 657c28b9857231fcc1dd799495815f1f7119b8bb (patch) | |
| tree | 5a13ab446aa54d97125a7aa9c0ac4e7a8def9634 /src/lib | |
| parent | 9827b7f54787ec833690b3e95c19191bbda36637 (diff) | |
util/bitstream.h: Adjust m_doffset based on m_dbitoffs when flushing. (#12060)
Fixes issues exposed when reading LaserDisc CHDs.
Diffstat (limited to 'src/lib')
| -rw-r--r-- | src/lib/util/bitstream.h | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/src/lib/util/bitstream.h b/src/lib/util/bitstream.h index 2866d28c20d..eb8b2005329 100644 --- a/src/lib/util/bitstream.h +++ b/src/lib/util/bitstream.h @@ -175,6 +175,10 @@ inline uint32_t bitstream_in::read_offset() const result--; bits -= 8; } + + if (m_dbitoffs > bits) + result++; + return result; } @@ -190,7 +194,11 @@ inline uint32_t bitstream_in::flush() m_doffset--; m_bits -= 8; } - m_bits = m_buffer = 0; + + if (m_dbitoffs > m_bits) + m_doffset++; + + m_bits = m_buffer = m_dbitoffs = 0; return m_doffset; } |
