Prepare more files for update to pdfium::span<> Update files which were missed in the last go-around. In particular, avoid using dynamic_extent with two-arg subspan (deviation from std:: spec in base::span<> that eliminates branching). Bug: 42271100 Change-Id: I2080257bb2e8a94ddbf9246c9ba1ddf2cb14fb17 Reviewed-on: https://pdfium-review.googlesource.com/c/pdfium/+/130993 Reviewed-by: Lei Zhang <thestig@chromium.org> Commit-Queue: Tom Sepez <tsepez@chromium.org>
diff --git a/core/fpdfapi/font/cpdf_cidfont.cpp b/core/fpdfapi/font/cpdf_cidfont.cpp index dee643a..ee18859 100644 --- a/core/fpdfapi/font/cpdf_cidfont.cpp +++ b/core/fpdfapi/font/cpdf_cidfont.cpp
@@ -350,7 +350,8 @@ wchar_t unicode; size_t ret = FX_MultiByteToWideChar( kCharsetCodePages[static_cast<size_t>(cmap_->GetCoding())], - ByteStringView(pdfium::make_span(sequence).first(charsize)), + ByteStringView( + pdfium::make_span(sequence).first(static_cast<size_t>(charsize))), pdfium::span_from_ref(unicode)); return ret == 1 ? unicode : 0; #else
diff --git a/core/fxcodec/fax/faxmodule.cpp b/core/fxcodec/fax/faxmodule.cpp index 9e91c0a..28d3e8d 100644 --- a/core/fxcodec/fax/faxmodule.cpp +++ b/core/fxcodec/fax/faxmodule.cpp
@@ -866,7 +866,8 @@ line_buf_[0] = last_byte; pdfium::span<const uint8_t> scan_line = src_->GetScanline(i); FaxEncode2DLine(scan_line); - dest_buf_.AppendSpan(pdfium::make_span(line_buf_).first(dest_bitpos_ / 8)); + dest_buf_.AppendSpan(pdfium::make_span(line_buf_).first( + static_cast<size_t>(dest_bitpos_ / 8))); last_byte = line_buf_[dest_bitpos_ / 8]; dest_bitpos_ %= 8; ref_line_span_ = scan_line;
diff --git a/core/fxcodec/jpeg/jpegmodule.cpp b/core/fxcodec/jpeg/jpegmodule.cpp index f86ee5a..b5d8a57 100644 --- a/core/fxcodec/jpeg/jpegmodule.cpp +++ b/core/fxcodec/jpeg/jpegmodule.cpp
@@ -451,14 +451,14 @@ for (uint32_t i = 0; i < width; i++) { ReverseCopy3Bytes(dest_scan, src_scan.data()); dest_scan += 3; - src_scan = src_scan.subspan(bytes_per_pixel); + src_scan = src_scan.subspan(static_cast<size_t>(bytes_per_pixel)); } }); } else { UNSAFE_TODO({ for (uint32_t i = 0; i < pitch; i++) { *dest_scan++ = ~src_scan.front(); - src_scan = src_scan.subspan(1); + src_scan = src_scan.subspan<1u>(); } }); }
diff --git a/core/fxcrt/fixed_size_data_vector.h b/core/fxcrt/fixed_size_data_vector.h index 5e8c8c9..0d87dd7 100644 --- a/core/fxcrt/fixed_size_data_vector.h +++ b/core/fxcrt/fixed_size_data_vector.h
@@ -112,12 +112,14 @@ } // Convenience methods to slice the vector into spans. - pdfium::span<T> subspan(size_t offset, - size_t count = pdfium::dynamic_extent) { + pdfium::span<T> subspan(size_t offset) { return span().subspan(offset); } + pdfium::span<const T> subspan(size_t offset) const { + return span().subspan(offset); + } + pdfium::span<T> subspan(size_t offset, size_t count) { return span().subspan(offset, count); } - pdfium::span<const T> subspan(size_t offset, - size_t count = pdfium::dynamic_extent) const { + pdfium::span<const T> subspan(size_t offset, size_t count) const { return span().subspan(offset, count); }
diff --git a/core/fxcrt/fx_coordinates.cpp b/core/fxcrt/fx_coordinates.cpp index 32b52d7..385b13c 100644 --- a/core/fxcrt/fx_coordinates.cpp +++ b/core/fxcrt/fx_coordinates.cpp
@@ -146,7 +146,7 @@ float max_x = pPoints.front().x; float min_y = pPoints.front().y; float max_y = pPoints.front().y; - for (const auto& point : pPoints.subspan(1)) { + for (const auto& point : pPoints.subspan<1u>()) { min_x = std::min(min_x, point.x); max_x = std::max(max_x, point.x); min_y = std::min(min_y, point.y);
diff --git a/core/fxcrt/zip_unittest.cpp b/core/fxcrt/zip_unittest.cpp index 40666c2..1ab23c3 100644 --- a/core/fxcrt/zip_unittest.cpp +++ b/core/fxcrt/zip_unittest.cpp
@@ -68,7 +68,7 @@ // Test that ordering of args doesn't matter, except for the size // determination. int output[4] = {}; - auto sub_output = pdfium::make_span(output).first(3); + auto sub_output = pdfium::make_span(output).first<3u>(); for (auto [out, in] : Zip(sub_output, stuff)) { out = in; } @@ -99,7 +99,7 @@ // Test that ordering of args doesn't matter, except for the size // determination. int output[4] = {}; - auto sub_output = pdfium::make_span(output).first(3); + auto sub_output = pdfium::make_span(output).first<3u>(); for (auto [out, in1, in2] : Zip(sub_output, stuff1, stuff2)) { out = in1 + in2; }
diff --git a/core/fxge/dib/cfx_dibbase.cpp b/core/fxge/dib/cfx_dibbase.cpp index fa553fa..8680911 100644 --- a/core/fxge/dib/cfx_dibbase.cpp +++ b/core/fxge/dib/cfx_dibbase.cpp
@@ -46,7 +46,7 @@ dest_buf.subspan(Fx2DSizeOrDie(row, dest_pitch))); auto src_span = src_bitmap->GetScanlineAs<FX_BGR_STRUCT<uint8_t>>(src_top + row) - .subspan(src_left); + .subspan(static_cast<size_t>(src_left)); for (auto [input, output] : fxcrt::Zip(src_span, dest_span)) { output.blue = input.blue; output.green = input.green; @@ -69,7 +69,7 @@ dest_buf.subspan(Fx2DSizeOrDie(row, dest_pitch))); auto src_span = src_bitmap->GetScanlineAs<FX_BGRA_STRUCT<uint8_t>>(src_top + row) - .subspan(src_left); + .subspan(static_cast<size_t>(src_left)); for (auto [input, output] : fxcrt::Zip(src_span, dest_span)) { auto unpremultiplied_input = UnPreMultiplyColor(input); output.blue = unpremultiplied_input.blue;
diff --git a/core/fxge/dib/cfx_scanlinecompositor.cpp b/core/fxge/dib/cfx_scanlinecompositor.cpp index 566d28d..fe7da3f 100644 --- a/core/fxge/dib/cfx_scanlinecompositor.cpp +++ b/core/fxge/dib/cfx_scanlinecompositor.cpp
@@ -2623,7 +2623,7 @@ auto src_span = fxcrt::reinterpret_span<const FX_BGRA_STRUCT<uint8_t>>(src_scan).first( - width); + static_cast<size_t>(width)); switch (dest_format_) { case FXDIB_Format::kInvalid:
diff --git a/core/fxge/win32/cfx_psrenderer.cpp b/core/fxge/win32/cfx_psrenderer.cpp index e8a9268..6916666 100644 --- a/core/fxge/win32/cfx_psrenderer.cpp +++ b/core/fxge/win32/cfx_psrenderer.cpp
@@ -918,7 +918,9 @@ result.data.resize(safe_size.ValueOrDie()); auto dest_span = pdfium::make_span(result.data); for (int row = 0; row < height; row++) { - fxcrt::Copy(src->GetScanline(row), dest_span.subspan(row * pitch, pitch)); + fxcrt::Copy(src->GetScanline(row), + dest_span.subspan(static_cast<size_t>(row * pitch), + static_cast<size_t>(pitch))); } return result; }