Convert CFX_BitStream to store a span<>
Looks like this was partially converted, but still was using
raw pointer arithmetic under the covers.
Change-Id: I7f712b8c3b3917f86ce59d0974d6496db9786899
Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/101030
Commit-Queue: Tom Sepez <tsepez@chromium.org>
Reviewed-by: Lei Zhang <thestig@chromium.org>
Auto-Submit: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fxcrt/cfx_bitstream.cpp b/core/fxcrt/cfx_bitstream.cpp
index e343deb..a1719da 100644
--- a/core/fxcrt/cfx_bitstream.cpp
+++ b/core/fxcrt/cfx_bitstream.cpp
@@ -13,8 +13,8 @@
#include "third_party/base/check_op.h"
CFX_BitStream::CFX_BitStream(pdfium::span<const uint8_t> pData)
- : m_BitSize(pData.size() * 8), m_pData(pData.data()) {
- CHECK_LE(pData.size(), std::numeric_limits<size_t>::max() / 8);
+ : m_BitSize(pData.size() * 8), m_pData(pData) {
+ CHECK_LE(m_pData.size(), std::numeric_limits<size_t>::max() / 8);
}
CFX_BitStream::~CFX_BitStream() = default;
@@ -31,8 +31,7 @@
const uint32_t bit_pos = m_BitPos % 8;
size_t byte_pos = m_BitPos / 8;
- const uint8_t* data = m_pData;
- uint8_t current_byte = data[byte_pos];
+ uint8_t current_byte = m_pData[byte_pos];
if (nBits == 1) {
uint32_t bit = (current_byte & (1 << (7 - bit_pos))) ? 1 : 0;
@@ -55,10 +54,10 @@
}
while (bit_left >= 8) {
bit_left -= 8;
- result |= data[byte_pos++] << bit_left;
+ result |= m_pData[byte_pos++] << bit_left;
}
if (bit_left)
- result |= data[byte_pos] >> (8 - bit_left);
+ result |= m_pData[byte_pos] >> (8 - bit_left);
m_BitPos += nBits;
return result;
}
diff --git a/core/fxcrt/cfx_bitstream.h b/core/fxcrt/cfx_bitstream.h
index a476e8e..c60cf0a 100644
--- a/core/fxcrt/cfx_bitstream.h
+++ b/core/fxcrt/cfx_bitstream.h
@@ -10,7 +10,6 @@
#include <stddef.h>
#include <stdint.h>
-#include "core/fxcrt/unowned_ptr.h"
#include "third_party/base/span.h"
class CFX_BitStream {
@@ -34,7 +33,7 @@
private:
size_t m_BitPos = 0;
const size_t m_BitSize;
- UnownedPtr<const uint8_t> const m_pData;
+ pdfium::span<const uint8_t> const m_pData;
};
#endif // CORE_FXCRT_CFX_BITSTREAM_H_