Fix 32-bit targets

epel9
Josh Stone 5 years ago
parent b0a974efb3
commit 2848e624ea

@ -0,0 +1,43 @@
From 2b984085425549496b365255e807d1b45ac57e69 Mon Sep 17 00:00:00 2001
From: Josh Stone <cuviper@gmail.com>
Date: Thu, 16 Jan 2020 12:52:53 -0800
Subject: [PATCH 1/2] Make sure offset_table_offset is written as 8 bytes
It's a `usize` value, but the output format expects 8 bytes. That's fine
on 64-bit targets, but 32-bit targets were failing tests:
---- stream::binary_writer::tests::bplist_roundtrip stdout ----
thread 'stream::binary_writer::tests::bplist_roundtrip' panicked at 'assertion failed: `(left == right)`
left: `8`,
right: `4`: destination and source slices have different lengths', src/libcore/slice/mod.rs:2217:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace.
---- stream::binary_writer::tests::nskeyedarchiver_roundtrip stdout ----
thread 'stream::binary_writer::tests::nskeyedarchiver_roundtrip' panicked at 'assertion failed: `(left == right)`
left: `8`,
right: `4`: destination and source slices have different lengths', src/libcore/slice/mod.rs:2217:9
---- stream::binary_writer::tests::utf16_roundtrip stdout ----
thread 'stream::binary_writer::tests::utf16_roundtrip' panicked at 'assertion failed: `(left == right)`
left: `8`,
right: `4`: destination and source slices have different lengths', src/libcore/slice/mod.rs:2217:9
Casting to `u64` makes sure we have the correct size to write.
---
src/stream/binary_writer.rs | 2 +-
1 file changed, 1 insertion(+), 1 deletion(-)
diff --git a/src/stream/binary_writer.rs b/src/stream/binary_writer.rs
index 6541ea8d09d5..fe1e0902cda8 100644
--- a/src/stream/binary_writer.rs
+++ b/src/stream/binary_writer.rs
@@ -335,7 +335,7 @@ impl<W: Write> BinaryWriter<W> {
trailer[6] = offset_size;
trailer[7] = ref_size;
trailer[8..16].copy_from_slice(&(self.num_objects as u64).to_be_bytes());
- trailer[24..32].copy_from_slice(&offset_table_offset.to_be_bytes());
+ trailer[24..32].copy_from_slice(&(offset_table_offset as u64).to_be_bytes());
self.writer.write_exact(&trailer)?;
self.writer
--
2.24.1

@ -14,6 +14,9 @@ License: MIT
URL: https://crates.io/crates/plist URL: https://crates.io/crates/plist
Source: %{crates_source} Source: %{crates_source}
# Fix for 32-bit targets, https://github.com/ebarnard/rust-plist/pull/47
Patch1: 0001-Make-sure-offset_table_offset-is-written-as-8-bytes.patch
ExclusiveArch: %{rust_arches} ExclusiveArch: %{rust_arches}
%if %{__cargo_skip_build} %if %{__cargo_skip_build}
BuildArch: noarch BuildArch: noarch

Loading…
Cancel
Save