Add patch to address test failures on s390x

epel9
Aleksei Bavshin 3 years ago
parent 7f84b8a67e
commit c616536d51
No known key found for this signature in database
GPG Key ID: 4F071603387A382A

@ -0,0 +1,49 @@
From fe33599f4695c4ab442e1e5f8682cfda11321308 Mon Sep 17 00:00:00 2001
From: Aleksei Bavshin <alebastr89@gmail.com>
Date: Tue, 22 Mar 2022 22:47:21 -0700
Subject: [PATCH] lib: fix incorrect int ptr cast on big-endian architectures
`*usize` -> `*u32` conversion on 64-bit big-endian machine takes high
halfword of the value. As a consequence, any result returned via
`count` is unexpectedly shifted left:
u32 = 00 00 00 01 // 1
usize = 00 00 00 01 00 00 00 00 // 4294967296
Fixes following test failure:
```
$ cargo test -- tests::corpus_test
<...>
running 13 tests
memory allocation of 206158430208 bytes failed
error: test failed, to rerun pass '--lib'
```
---
lib/binding_rust/lib.rs | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/binding_rust/lib.rs b/binding_rust/lib.rs
index e88a411c..1df9e7ac 100644
--- a/binding_rust/lib.rs
+++ b/binding_rust/lib.rs
@@ -705,14 +705,14 @@ impl Tree {
/// after calling one of the [Parser::parse] functions. Call it on the old tree that
/// was passed to parse, and pass the new tree that was returned from `parse`.
pub fn changed_ranges(&self, other: &Tree) -> impl ExactSizeIterator<Item = Range> {
- let mut count = 0;
+ let mut count = 0u32;
unsafe {
let ptr = ffi::ts_tree_get_changed_ranges(
self.0.as_ptr(),
other.0.as_ptr(),
- &mut count as *mut _ as *mut u32,
+ &mut count as *mut u32,
);
- util::CBufferIter::new(ptr, count).map(|r| r.into())
+ util::CBufferIter::new(ptr, count as usize).map(|r| r.into())
}
}
}
--
2.35.1

@ -18,6 +18,8 @@ Source: %{crates_source}
Source1: https://github.com/tree-sitter/tree-sitter/raw/v%{version}/LICENSE#/LICENSE.upstream
# tree-sitter/tree-sitter#1524 modified to apply to the crate source
Patch0: binding_rust-regenerate-bindings-during-build.patch
# fix tree-sitter-cli tests on s390x - tree-sitter/tree-sitter#1692
Patch1: lib-fix-incorrect-int-ptr-cast-on-big-endian-archite.patch
ExclusiveArch: %{rust_arches}

Loading…
Cancel
Save