diff --git a/0001-fix-ub-in-diff-gutter.patch b/0001-fix-ub-in-diff-gutter.patch new file mode 100644 index 0000000..2bad1e2 --- /dev/null +++ b/0001-fix-ub-in-diff-gutter.patch @@ -0,0 +1,68 @@ +From 269f637847140ddb9537efde4968bd92c91c9e1e Mon Sep 17 00:00:00 2001 +From: Pascal Kuthe +Date: Sun, 4 Jun 2023 16:59:01 +0200 +Subject: [PATCH] fix UB in diff gutter + +--- + helix-vcs/src/diff/line_cache.rs | 18 +++++++++--------- + 1 file changed, 9 insertions(+), 9 deletions(-) + +diff --git a/helix-vcs/src/diff/line_cache.rs b/helix-vcs/src/diff/line_cache.rs +index 8e48250f157e..460a2065e8ed 100644 +--- a/helix-vcs/src/diff/line_cache.rs ++++ b/helix-vcs/src/diff/line_cache.rs +@@ -20,8 +20,8 @@ use super::{MAX_DIFF_BYTES, MAX_DIFF_LINES}; + /// A cache that stores the `lines` of a rope as a vector. + /// It allows safely reusing the allocation of the vec when updating the rope + pub(crate) struct InternedRopeLines { +- diff_base: Rope, +- doc: Rope, ++ diff_base: Box, ++ doc: Box, + num_tokens_diff_base: u32, + interned: InternedInput>, + } +@@ -34,8 +34,8 @@ impl InternedRopeLines { + after: Vec::with_capacity(doc.len_lines()), + interner: Interner::new(diff_base.len_lines() + doc.len_lines()), + }, +- diff_base, +- doc, ++ diff_base: Box::new(diff_base), ++ doc: Box::new(doc), + // will be populated by update_diff_base_impl + num_tokens_diff_base: 0, + }; +@@ -44,19 +44,19 @@ impl InternedRopeLines { + } + + pub fn doc(&self) -> Rope { +- self.doc.clone() ++ Rope::clone(&*self.doc) + } + + pub fn diff_base(&self) -> Rope { +- self.diff_base.clone() ++ Rope::clone(&*self.diff_base) + } + + /// Updates the `diff_base` and optionally the document if `doc` is not None + pub fn update_diff_base(&mut self, diff_base: Rope, doc: Option) { + self.interned.clear(); +- self.diff_base = diff_base; ++ self.diff_base = Box::new(diff_base); + if let Some(doc) = doc { +- self.doc = doc ++ self.doc = Box::new(doc) + } + if !self.is_too_large() { + self.update_diff_base_impl(); +@@ -74,7 +74,7 @@ impl InternedRopeLines { + .interner + .erase_tokens_after(self.num_tokens_diff_base.into()); + +- self.doc = doc; ++ self.doc = Box::new(doc); + if self.is_too_large() { + self.interned.after.clear(); + } else { diff --git a/helix.changes b/helix.changes index 4bca771..877bb91 100644 --- a/helix.changes +++ b/helix.changes @@ -1,3 +1,23 @@ +------------------------------------------------------------------- +Thu Aug 31 23:40:52 UTC 2023 - Soc Virnyl Estela + +- Add 0001-fix-ub-in-diff-gutter.patch. + * This fixes issues when building helix with Rust >1.71. In the future, + This will be removed once a fix lands on the `ropey` crate which was the + cause of the issue. +- Reenable usage of cargo-packaging macros +- Remove explicit dependency declaration of cargo1.66 to use latest Rust. + +------------------------------------------------------------------- +Wed Aug 30 12:51:00 UTC 2023 - Soc Virnyl Estela + +- Disable usage of cargo-packaging macros + +------------------------------------------------------------------- +Wed Aug 30 12:34:13 UTC 2023 - Soc Virnyl Estela + +- Limit cargo version = 1.66 + ------------------------------------------------------------------- Thu Jun 22 11:33:28 UTC 2023 - Eyad Issa diff --git a/helix.spec b/helix.spec index 06b7a85..9aa1fe1 100644 --- a/helix.spec +++ b/helix.spec @@ -34,6 +34,7 @@ Source1: vendor.tar.xz Source2: cargo_config Source3: README-suse-maint.md Source4: helix-rpmlintrc +Patch1: https://github.com/helix-editor/helix/pull/7227.patch#/0001-fix-ub-in-diff-gutter.patch BuildRequires: c++_compiler BuildRequires: c_compiler BuildRequires: cargo-packaging @@ -96,7 +97,7 @@ sed -e '/^\#\!\/usr\/bin\/env .*/d' -i contrib/completion/hx.* export HELIX_DISABLE_AUTO_GRAMMAR_BUILD=true export TARGET="%_arch" %{cargo_build} -cargo run --release -- --grammar build +cargo run --release --offline -- --grammar build # Shell completions sed -i "s|hx|helix|g" contrib/completion/hx.*