From 8488ae8394cf2e9b098f0c97ffd22d2bc0a1af13 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E4=B8=89=E5=92=B2=E9=9B=85=20=C2=B7=20Misaki=20Masa?= Date: Sun, 30 Mar 2025 03:33:09 +0800 Subject: [PATCH] fix: always check whether the cursor exceeds the upper bound to guard against unexpected values (#2551) --- Cargo.lock | 16 ++++++++-------- yazi-fs/src/step.rs | 9 ++++----- 2 files changed, 12 insertions(+), 13 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 2ec600e0..fb061eea 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -585,9 +585,9 @@ dependencies = [ [[package]] name = "darling" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "6f63b86c8a8826a49b8c21f08a2d07338eec8d900540f8630dc76284be802989" +checksum = "fc7f46116c46ff9ab3eb1597a45688b6715c6e628b5c133e288e709a29bcb4ee" dependencies = [ "darling_core", "darling_macro", @@ -595,9 +595,9 @@ dependencies = [ [[package]] name = "darling_core" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95133861a8032aaea082871032f5815eb9e98cef03fa916ab4500513994df9e5" +checksum = "0d00b9596d185e565c2207a0b01f8bd1a135483d02d9b7b0a54b11da8d53412e" dependencies = [ "fnv", "ident_case", @@ -609,9 +609,9 @@ dependencies = [ [[package]] name = "darling_macro" -version = "0.20.10" +version = "0.20.11" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d336a2a514f6ccccaa3e09b02d41d35330c07ddf03a62165fcec10bb561c7806" +checksum = "fc34b93ccb385b40dc71c6fceac4b2ad23662c7eeb248cf10d529b7e055b6ead" dependencies = [ "darling_core", "quote", @@ -1603,9 +1603,9 @@ dependencies = [ [[package]] name = "once_cell" -version = "1.21.1" +version = "1.21.3" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d75b0bedcc4fe52caa0e03d9f1151a323e4aa5e2d78ba3580400cd3c9e2bc4bc" +checksum = "42f5e15c9953c5e4ccceeb2e7382a716482c34515315f7b03532b8b4e8393d2d" [[package]] name = "onig" diff --git a/yazi-fs/src/step.rs b/yazi-fs/src/step.rs index 916060b4..ae5277dc 100644 --- a/yazi-fs/src/step.rs +++ b/yazi-fs/src/step.rs @@ -63,14 +63,13 @@ impl Step { Self::Percent(n) => n as isize * limit as isize / 100, }; - if fixed == 0 { - pos - } else if matches!(self, Self::Prev | Self::Next) { + if matches!(self, Self::Prev | Self::Next) { fixed.saturating_add_unsigned(pos).rem_euclid(len as _) as _ - } else if fixed > 0 { - pos.saturating_add_signed(fixed).min(len - 1) + } else if fixed >= 0 { + pos.saturating_add_signed(fixed) } else { pos.saturating_sub(fixed.unsigned_abs()) } + .min(len - 1) } }