-
Notifications
You must be signed in to change notification settings - Fork 18
Open
Description
If a node is collapsed, and its children is removed, and others are added, then the node is uncollapsed the program crashes.
Example program:
use cursive_tree_view::{Placement, TreeView};
fn main() {
let mut tree = TreeView::new();
tree.insert_item("A", Placement::LastChild, 0);
tree.insert_item("B", Placement::LastChild, 0);
tree.insert_item("C", Placement::LastChild, 1);
tree.insert_item("D", Placement::LastChild, 2);
tree.insert_item("E", Placement::LastChild, 2);
tree.set_collapsed(2, true);
let mut removed = tree.remove_children(2).unwrap().into_iter().collect::<Vec<_>>();
removed.push("F");
for child in removed {
tree.insert_item(child, Placement::LastChild, 2);
}
let mut siv = cursive::default();
siv.add_layer(tree);
siv.run();
}If you run the program and try to unfold C, it crashes with the following backtrace:
thread 'main' panicked at 'index out of bounds: the len is 6 but the index is 6', /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_tree_view-0.8.0/src/lib.rs:504:25
stack backtrace:
0: rust_begin_unwind
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/std/src/panicking.rs:584:5
1: core::panicking::panic_fmt
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/panicking.rs:142:14
2: core::panicking::panic_bounds_check
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/panicking.rs:84:5
3: <cursive_tree_view::TreeView<T> as cursive_core::view::view_trait::View>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_tree_view-0.8.0/src/lib.rs:504:25
4: cursive_core::view::view_wrapper::ViewWrapper::wrap_draw::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:54:28
5: <cursive_core::views::boxed_view::BoxedView as cursive_core::view::view_wrapper::ViewWrapper>::with_view
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/boxed_view.rs:52:14
6: cursive_core::view::view_wrapper::ViewWrapper::wrap_draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:54:9
7: cursive_core::view::view_wrapper::<impl cursive_core::view::view_trait::View for T>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:112:9
8: cursive_core::view::view_wrapper::ViewWrapper::wrap_draw::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:54:28
9: <cursive_core::views::circular_focus::CircularFocus<T> as cursive_core::view::view_wrapper::ViewWrapper>::with_view
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:183:41
10: cursive_core::view::view_wrapper::ViewWrapper::wrap_draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:54:9
11: cursive_core::view::view_wrapper::<impl cursive_core::view::view_trait::View for T>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:112:9
12: <cursive_core::views::layer::Layer<T> as cursive_core::view::view_wrapper::ViewWrapper>::wrap_draw::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/layer.rs:50:13
13: cursive_core::printer::Printer::with_color
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/printer.rs:349:9
14: <cursive_core::views::layer::Layer<T> as cursive_core::view::view_wrapper::ViewWrapper>::wrap_draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/layer.rs:46:9
15: cursive_core::view::view_wrapper::<impl cursive_core::view::view_trait::View for T>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:112:9
16: <cursive_core::views::shadow_view::ShadowView<T> as cursive_core::view::view_wrapper::ViewWrapper>::wrap_draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/shadow_view.rs:108:9
17: cursive_core::view::view_wrapper::<impl cursive_core::view::view_trait::View for T>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/view/view_wrapper.rs:112:9
18: <cursive_core::views::stack_view::ChildWrapper<T> as cursive_core::view::view_trait::View>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/stack_view.rs:137:44
19: cursive_core::views::stack_view::StackView::draw_fg::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/stack_view.rs:564:17
20: cursive_core::printer::Printer::with_effects
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/printer.rs:424:21
21: cursive_core::printer::Printer::with_style::{{closure}}
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/printer.rs:382:13
22: cursive_core::printer::Printer::with_color
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/printer.rs:349:9
23: cursive_core::printer::Printer::with_style
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/printer.rs:381:9
24: cursive_core::views::stack_view::StackView::draw_fg
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/stack_view.rs:559:9
25: cursive_core::views::screens_view::ScreensView<cursive_core::views::stack_view::StackView>::draw_fg
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/views/screens_view.rs:98:13
26: cursive_core::cursive::Cursive::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive.rs:147:9
27: cursive_core::cursive_run::CursiveRunner<C>::draw
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive_run.rs:100:9
28: cursive_core::cursive_run::CursiveRunner<C>::refresh
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive_run.rs:195:9
29: cursive_core::cursive_run::CursiveRunner<C>::post_events
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive_run.rs:175:13
30: cursive_core::cursive_run::CursiveRunner<C>::step
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive_run.rs:217:9
31: cursive_core::cursive_run::CursiveRunner<C>::run
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive_run.rs:239:13
32: cursive_core::cursive::Cursive::try_run_with
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive_core-0.3.7/src/cursive.rs:919:9
33: cursive::cursive_runnable::CursiveRunnable::try_run
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.20.0/src/cursive_runnable.rs:80:9
34: cursive::cursive_runnable::CursiveRunnable::run
at /home/user/.cargo/registry/src/github.com-1ecc6299db9ec823/cursive-0.20.0/src/cursive_runnable.rs:75:9
35: viewtest::main
at ./src/main.rs:25:5
36: core::ops::function::FnOnce::call_once
at /rustc/a8314ef7d0ec7b75c336af2c9857bfaf43002bfc/library/core/src/ops/function.rs:248:5
note: Some details are omitted, run with `RUST_BACKTRACE=full` for a verbose backtrace.
Metadata
Metadata
Assignees
Labels
No labels