iced-rs / iced_aw

Additional widgets for the Iced GUI library
MIT License
437 stars 104 forks source link

iced_aw MenuBar panics with "attempted to index slice up to maximum usize" #268

Closed shartrec closed 1 month ago

shartrec commented 1 month ago

When traversing cascading menus with the mouse, I continually get a panic in /iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_tree.rs:394:19

Using the master branch.

[dependencies.iced_aw]
git = "https://github.com/iced-rs/iced_aw.git"
rev = "b06b22c6755149545c09f7c2d75e8bf2567415f7"
features = ["menu"]

The sack trace is :

thread 'main' panicked at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_tree.rs:394:19:
attempted to index slice up to maximum usize
stack backtrace:
   0: rust_begin_unwind
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/std/src/panicking.rs:652:5
   1: core::panicking::panic_fmt
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/panicking.rs:72:14
   2: core::slice::index::slice_end_index_overflow_fail
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:107:5
   3: <core::ops::range::RangeInclusive<usize> as core::slice::index::SliceIndex<[T]>>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:579:13
   4: core::slice::index::<impl core::ops::index::Index<I> for [T]>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:18:9
   5: <alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/alloc/src/vec/mod.rs:2907:9
   6: iced_aw::widgets::menu::menu_tree::Menu<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_tree.rs:394:19
   7: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_bar_overlay.rs:380:21
   8: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_bar_overlay.rs:385:17
   9: core::option::Option<T>::map_or
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1131:24
  10: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_bar_overlay.rs:382:13
  11: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/b06b22c/src/widgets/menu/menu_bar_overlay.rs:397:9
  12: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
  13: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:125:17
  14: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:305:13
  15: core::option::Option<T>::map
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1072:29
  16: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/adapters/map.rs:108:26
  17: core::iter::traits::iterator::Iterator::reduce
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2624:21
  18: core::iter::traits::iterator::Iterator::max_by
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3260:9
  19: core::iter::traits::iterator::Iterator::max
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3161:9
  20: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:121:9
  21: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
  22: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:125:17
  23: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:305:13
  24: core::option::Option<T>::map
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1072:29
  25: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/adapters/map.rs:108:26
  26: core::iter::traits::iterator::Iterator::reduce
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2624:21
  27: core::iter::traits::iterator::Iterator::max_by
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3260:9
  28: core::iter::traits::iterator::Iterator::max
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3161:9
  29: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:121:9
  30: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
  31: iced_runtime::overlay::nested::Nested<Message,Theme,Renderer>::mouse_interaction::recurse::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/runtime/src/overlay/nested.rs:292:25
  32: core::option::Option<T>::unwrap_or_else
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:977:21
  33: iced_runtime::overlay::nested::Nested<Message,Theme,Renderer>::mouse_interaction::recurse
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/runtime/src/overlay/nested.rs:279:17
  34: iced_runtime::overlay::nested::Nested<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/runtime/src/overlay/nested.rs:299:9
  35: iced_runtime::user_interface::UserInterface<Message,Theme,Renderer>::draw::{{closure}}::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/runtime/src/user_interface.rs:530:51
  36: core::option::Option<T>::map
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1072:29
  37: iced_runtime::user_interface::UserInterface<Message,Theme,Renderer>::draw::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/runtime/src/user_interface.rs:521:17
  38: core::option::Option<T>::and_then
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1412:24
  39: iced_runtime::user_interface::UserInterface<Message,Theme,Renderer>::draw
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/runtime/src/user_interface.rs:518:9
  40: iced_winit::program::run_instance::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/winit/src/program.rs:773:53
  41: iced_winit::program::run::Runner<Message,F,C>::process_event
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/winit/src/program.rs:464:28
  42: <iced_winit::program::run::Runner<Message,F,C> as winit::application::ApplicationHandler<iced_runtime::Action<Message>>>::window_event
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/winit/src/program.rs:385:13
  43: winit::event_loop::dispatch_event_for_app
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/event_loop.rs:631:52
  44: winit::event_loop::EventLoop<T>::run_app::{{closure}}
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/event_loop.rs:265:49
  45: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:294:13
  46: core::ops::function::impls::<impl core::ops::function::FnMut<A> for &mut F>::call_mut
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:294:13
  47: winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::single_iteration
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/platform_impl/linux/wayland/event_loop/mod.rs:469:17
  48: winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::poll_events_with_timeout
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/platform_impl/linux/wayland/event_loop/mod.rs:295:9
  49: winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::pump_events
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/platform_impl/linux/wayland/event_loop/mod.rs:217:13
  50: winit::platform_impl::platform::wayland::event_loop::EventLoop<T>::run_on_demand
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/platform_impl/linux/wayland/event_loop/mod.rs:181:19
  51: winit::platform_impl::platform::EventLoop<T>::run_on_demand
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/platform_impl/linux/mod.rs:813:56
  52: winit::platform_impl::platform::EventLoop<T>::run
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/platform_impl/linux/mod.rs:806:9
  53: winit::event_loop::EventLoop<T>::run_app
             at /home/trevor/.cargo/git/checkouts/winit-57d3141eaf559308/254d6b3/src/event_loop.rs:265:9
  54: iced_winit::program::run
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/winit/src/program.rs:587:17
  55: iced::program::Program::run_with
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/src/program.rs:176:12
  56: iced::daemon::Daemon<P>::run_with
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/src/daemon.rs:128:9
  57: iced::daemon::Daemon<P>::run
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/src/daemon.rs:119:9
  58: rusty_calc::main
             at ./src/main.rs:66:18
  59: core::ops::function::FnOnce::call_once
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:250:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.

Process finished with exit code 101

In RustRover debugger, the offending values are

menu_state = {&iced_aw::widgets::menu::menu_tree::MenuState} 0x560355acfda0 
 scroll_offset = {f32} 0
 active = {core::option::Option<usize>::None} 
 slice = {iced_aw::widgets::menu::menu_tree::MenuSlice} 
  start_index = {usize} 0
  end_index = {usize} 18446744073709551615
  lower_bound_rel = {f32} 0
  upper_bound_rel = {f32} 3.40282347E+38
 pressed = {bool} false
slice = {&iced_aw::widgets::menu::menu_tree::MenuSlice} 0x560355acfdb0 
 start_index = {usize} 0
 end_index = {usize} 18446744073709551615
 lower_bound_rel = {f32} 0
 upper_bound_rel = {f32} 3.40282347E+38

Screenshot of menus before crash. This is just an example. I cannot see any particular movement pattern that causes the crash. Screenshot from 2024-07-20 09-52-47

Code is available at https://github.com/shartrec/RustyCalc/tree/4-Add_menus_in_place_of_popup

genusistimelord commented 1 month ago

Can you please give branch menu_fix a try to see if it fixes the issue?

https://github.com/iced-rs/iced_aw/tree/menu_fix

shartrec commented 1 month ago

I couldn't get that to build. Errors with other widgets.

/home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/overlay/color_picker.rs:112:22
    |
111 | /                 iced::widget::Text::new(icon_to_string(Bootstrap::X))
112 | |                     .align_x(Horizontal::Center)
    | |                     -^^^^^^^ method not found in `Text<'_, _, _>`
    | |_____________________|

Although I checked out your branch and could build it and run the examples. Very confused!!

shartrec commented 1 month ago

OK. Got app to build by adjusting cargo.toml to not include default features, only the ones I was using

[dependencies.iced_aw]
git = "https://github.com/iced-rs/iced_aw.git"
branch = "menu_fix"
default-features = false
features = [
    "menu",
    "icons"
]

The problem remains, but with slightly different stack trace / error

range end index 13 out of range for slice of length 12
stack backtrace:
   0: rust_begin_unwind
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/std/src/panicking.rs:652:5
   1: core::panicking::panic_fmt
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/panicking.rs:72:14
   2: core::slice::index::slice_end_index_len_fail_rt
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:66:5
   3: core::slice::index::slice_end_index_len_fail
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:59:5
   4: <core::ops::range::Range<usize> as core::slice::index::SliceIndex<[T]>>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:405:13
   5: <core::ops::range::RangeInclusive<usize> as core::slice::index::SliceIndex<[T]>>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:581:9
   6: core::slice::index::<impl core::ops::index::Index<I> for [T]>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/slice/index.rs:18:9
   7: <alloc::vec::Vec<T,A> as core::ops::index::Index<I>>::index
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/alloc/src/vec/mod.rs:2907:9
   8: iced_aw::widgets::menu::menu_tree::Menu<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_tree.rs:396:19
   9: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:380:21
  10: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:385:17
  11: core::option::Option<T>::map_or
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1131:24
  12: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:382:13
  13: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:385:17
  14: core::option::Option<T>::map_or
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1131:24
  15: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::rec
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:382:13
  16: <iced_aw::widgets::menu::menu_bar_overlay::MenuBarOverlay<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced_aw-d8617147b960a6c7/168c252/src/widgets/menu/menu_bar_overlay.rs:397:9
  17: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
  18: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:125:17
  19: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:305:13
  20: core::option::Option<T>::map
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/option.rs:1072:29
  21: <core::iter::adapters::map::Map<I,F> as core::iter::traits::iterator::Iterator>::next
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/adapters/map.rs:108:26
  22: core::iter::traits::iterator::Iterator::reduce
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:2624:21
  23: core::iter::traits::iterator::Iterator::max_by
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3260:9
  24: core::iter::traits::iterator::Iterator::max
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/iter/traits/iterator.rs:3161:9
  25: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:121:9
  26: iced_core::overlay::element::Element<Message,Theme,Renderer>::mouse_interaction
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/element.rs:74:9
  27: <iced_core::overlay::group::Group<Message,Theme,Renderer> as iced_core::overlay::Overlay<Message,Theme,Renderer>>::mouse_interaction::{{closure}}
             at /home/trevor/.cargo/git/checkouts/iced-f01cba4d5e61fd0a/b9eb861/core/src/overlay/group.rs:125:17
  28: core::ops::function::impls::<impl core::ops::function::FnOnce<A> for &mut F>::call_once
             at /rustc/129f3b9964af4d4a709d1383930ade12dfe7c081/library/core/src/ops/function.rs:305:13
  29: core::option::Option<T>::map
shartrec commented 1 month ago

I think the error is now in line 393

let max_item_slice = self.items.len().min(slice.end_index);

where the max_item_slice gets set to length, not length-1, but in line 396, the slice uses the ..= operator which is range inclusive.

shartrec commented 1 month ago

Testing locally with the following patch on top of your branch seems to have fixed it. :)

Index: src/widgets/menu/menu_tree.rs
IDEA additional info:
Subsystem: com.intellij.openapi.diff.impl.patch.CharsetEP
<+>UTF-8
===================================================================
diff --git a/src/widgets/menu/menu_tree.rs b/src/widgets/menu/menu_tree.rs
--- a/src/widgets/menu/menu_tree.rs (revision Staged)
+++ b/src/widgets/menu/menu_tree.rs (date 1721525273153)
@@ -390,8 +390,8 @@

         let menu_state = tree.state.downcast_ref::<MenuState>();
         let slice = &menu_state.slice;
-        let max_item_slice = self.items.len().min(slice.end_index);
-        let max_tree_slice = tree.children.len().min(slice.end_index);
+        let max_item_slice = self.items.len()-1.min(slice.end_index);
+        let max_tree_slice = tree.children.len()-1.min(slice.end_index);

         self.items[slice.start_index..=max_item_slice]
             .iter()

Sorry I tried to attach this as a patch file, but I was unable to do so.

genusistimelord commented 1 month ago

ahh ok why not push a PR to that branch with the small fix

shartrec commented 1 month ago

Done!