diff --git a/deps/crates/Cargo.lock b/deps/crates/Cargo.lock index 7ae5240fdbed26..f8f6913c843a4d 100644 --- a/deps/crates/Cargo.lock +++ b/deps/crates/Cargo.lock @@ -243,8 +243,6 @@ dependencies = [ [[package]] name = "resb" version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6a067ab3b5ca3b4dc307d0de9cf75f9f5e6ca9717b192b2f28a36c83e5de9e76" dependencies = [ "potential_utf", "serde_core", diff --git a/deps/crates/Cargo.toml b/deps/crates/Cargo.toml index ee208c16db1f2b..8c6224e0ed5f64 100644 --- a/deps/crates/Cargo.toml +++ b/deps/crates/Cargo.toml @@ -30,3 +30,7 @@ version = "=0.1.0" default-features = false # This is necessary to enable a spec-compliance quirk when upgrading to v0.1.2 # features = ["float64_representable_durations"] + +[patch.crates-io] +# Float https://github.com/unicode-org/icu4x/pull/7658 until crate is updated. +resb = { path="patches/resb" } diff --git a/deps/crates/vendor/resb/.cargo-checksum.json b/deps/crates/patches/resb/.cargo-checksum.json similarity index 100% rename from deps/crates/vendor/resb/.cargo-checksum.json rename to deps/crates/patches/resb/.cargo-checksum.json diff --git a/deps/crates/vendor/resb/Cargo.lock b/deps/crates/patches/resb/Cargo.lock similarity index 100% rename from deps/crates/vendor/resb/Cargo.lock rename to deps/crates/patches/resb/Cargo.lock diff --git a/deps/crates/vendor/resb/Cargo.toml b/deps/crates/patches/resb/Cargo.toml similarity index 100% rename from deps/crates/vendor/resb/Cargo.toml rename to deps/crates/patches/resb/Cargo.toml diff --git a/deps/crates/vendor/resb/LICENSE b/deps/crates/patches/resb/LICENSE similarity index 100% rename from deps/crates/vendor/resb/LICENSE rename to deps/crates/patches/resb/LICENSE diff --git a/deps/crates/vendor/resb/README.md b/deps/crates/patches/resb/README.md similarity index 100% rename from deps/crates/vendor/resb/README.md rename to deps/crates/patches/resb/README.md diff --git a/deps/crates/vendor/resb/examples/data/zoneinfo64.res b/deps/crates/patches/resb/examples/data/zoneinfo64.res similarity index 100% rename from deps/crates/vendor/resb/examples/data/zoneinfo64.res rename to deps/crates/patches/resb/examples/data/zoneinfo64.res diff --git a/deps/crates/vendor/resb/examples/data/zoneinfo64.txt b/deps/crates/patches/resb/examples/data/zoneinfo64.txt similarity index 100% rename from deps/crates/vendor/resb/examples/data/zoneinfo64.txt rename to deps/crates/patches/resb/examples/data/zoneinfo64.txt diff --git a/deps/crates/vendor/resb/examples/genrb.rs b/deps/crates/patches/resb/examples/genrb.rs similarity index 100% rename from deps/crates/vendor/resb/examples/genrb.rs rename to deps/crates/patches/resb/examples/genrb.rs diff --git a/deps/crates/vendor/resb/src/binary.rs b/deps/crates/patches/resb/src/binary.rs similarity index 99% rename from deps/crates/vendor/resb/src/binary.rs rename to deps/crates/patches/resb/src/binary.rs index 5269bbd28c9808..fd9081fbe065f3 100644 --- a/deps/crates/vendor/resb/src/binary.rs +++ b/deps/crates/patches/resb/src/binary.rs @@ -473,7 +473,7 @@ fn read_u16(input: &[u8]) -> Result<(u16, &[u8]), BinaryDeserializerError> { let bytes = get_subslice(input, ..core::mem::size_of::())? .try_into() .unwrap(); - let value = u16::from_le_bytes(bytes); + let value = u16::from_ne_bytes(bytes); let rest = get_subslice(input, core::mem::size_of::()..)?; Ok((value, rest)) diff --git a/deps/crates/vendor/resb/src/binary/deserializer.rs b/deps/crates/patches/resb/src/binary/deserializer.rs similarity index 99% rename from deps/crates/vendor/resb/src/binary/deserializer.rs rename to deps/crates/patches/resb/src/binary/deserializer.rs index d52f568146013b..c533e67d509c4e 100644 --- a/deps/crates/vendor/resb/src/binary/deserializer.rs +++ b/deps/crates/patches/resb/src/binary/deserializer.rs @@ -23,6 +23,11 @@ const SYSTEM_CHARSET_FAMILY: CharsetFamily = CharsetFamily::Ascii; /// Deserializes an instance of type `T` from bytes representing a binary ICU /// resource bundle. +/// +/// The input data must be in the platform's native endianness. ICU4C resource +/// bundles such as `zoneinfo64.res` are generated in both little endian and +/// big endian formats; callers must ensure the appropriate format is provided +/// for the target platform. pub fn from_words<'a, T>(input: &'a [u32]) -> Result where T: Deserialize<'a>, @@ -142,7 +147,7 @@ impl<'de> ResourceTreeDeserializer<'de> { )) } }; - let descriptor = u32::from_le_bytes(descriptor); + let descriptor = u32::from_ne_bytes(descriptor); ResDescriptor::try_from(descriptor) } @@ -887,7 +892,7 @@ impl<'de> Resource16BitDeserializer<'de> { // exactly 2 bytes. #[expect(clippy::unwrap_used)] let bytes = <[u8; 2]>::try_from(bytes).unwrap(); - u16::from_le_bytes(bytes) + u16::from_ne_bytes(bytes) }); char::decode_utf16(units) @@ -1255,7 +1260,7 @@ fn read_u32(input: &[u8]) -> Result<(u32, &[u8]), BinaryDeserializerError> { ))? .try_into() .unwrap(); - let value = u32::from_le_bytes(bytes); + let value = u32::from_ne_bytes(bytes); let rest = input diff --git a/deps/crates/vendor/resb/src/binary/header.rs b/deps/crates/patches/resb/src/binary/header.rs similarity index 95% rename from deps/crates/vendor/resb/src/binary/header.rs rename to deps/crates/patches/resb/src/binary/header.rs index be776f404ea86d..b8518fce9cea2b 100644 --- a/deps/crates/vendor/resb/src/binary/header.rs +++ b/deps/crates/patches/resb/src/binary/header.rs @@ -113,11 +113,8 @@ impl TryFrom<&[u8]> for BinReprInfo { let (size, value) = read_u16(value)?; let (reserved_word, value) = read_u16(value)?; - // While the consumer is responsible for verifying acceptability of most - // contents of the repr info, we explicitly depend on little endian data - // in order to ensure compatibility with `zerovec`. let (endianness, value) = (Endianness::try_from(value[0])?, &value[1..]); - if endianness != Endianness::Little { + if (endianness == Endianness::Little) != cfg!(target_endian = "little") { return Err(BinaryDeserializerError::unsupported_format( "big-endian bundles are not supported", )); diff --git a/deps/crates/vendor/resb/src/binary/helpers.rs b/deps/crates/patches/resb/src/binary/helpers.rs similarity index 100% rename from deps/crates/vendor/resb/src/binary/helpers.rs rename to deps/crates/patches/resb/src/binary/helpers.rs diff --git a/deps/crates/vendor/resb/src/binary/serializer.rs b/deps/crates/patches/resb/src/binary/serializer.rs similarity index 100% rename from deps/crates/vendor/resb/src/binary/serializer.rs rename to deps/crates/patches/resb/src/binary/serializer.rs diff --git a/deps/crates/vendor/resb/src/bundle.rs b/deps/crates/patches/resb/src/bundle.rs similarity index 100% rename from deps/crates/vendor/resb/src/bundle.rs rename to deps/crates/patches/resb/src/bundle.rs diff --git a/deps/crates/vendor/resb/src/lib.rs b/deps/crates/patches/resb/src/lib.rs similarity index 100% rename from deps/crates/vendor/resb/src/lib.rs rename to deps/crates/patches/resb/src/lib.rs diff --git a/deps/crates/vendor/resb/src/text.rs b/deps/crates/patches/resb/src/text.rs similarity index 100% rename from deps/crates/vendor/resb/src/text.rs rename to deps/crates/patches/resb/src/text.rs diff --git a/deps/crates/vendor/resb/src/text/reader.rs b/deps/crates/patches/resb/src/text/reader.rs similarity index 100% rename from deps/crates/vendor/resb/src/text/reader.rs rename to deps/crates/patches/resb/src/text/reader.rs diff --git a/deps/crates/vendor/resb/src/text/reader/parse_state.rs b/deps/crates/patches/resb/src/text/reader/parse_state.rs similarity index 100% rename from deps/crates/vendor/resb/src/text/reader/parse_state.rs rename to deps/crates/patches/resb/src/text/reader/parse_state.rs