summaryrefslogtreecommitdiffstatshomepage
path: root/src/lib
diff options
context:
space:
mode:
author 987123879113 <63495610+987123879113@users.noreply.github.com>2024-02-25 03:38:15 +0900
committer GitHub <noreply@github.com>2024-02-25 05:38:15 +1100
commit657c28b9857231fcc1dd799495815f1f7119b8bb (patch)
tree5a13ab446aa54d97125a7aa9c0ac4e7a8def9634 /src/lib
parent9827b7f54787ec833690b3e95c19191bbda36637 (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.h10
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;
}