-
Notifications
You must be signed in to change notification settings - Fork 444
Closed
Labels
good first issueGood for newcomersGood for newcomers
Description
What should happen:
diffs for files with space enclosed dashes should work
What does happen:
diffs for files with space enclosed dashes cause panicking
How to reproduce:
git-delta is installed from cargo with
cargo install git-delta --debug
I've set up delta for git in .gitconfig
as given in README.md
Setup:
# create a test git
git init test
cd test
# create a file with space enclosed dash
echo "test" > "strange - file.txt"
git add strange\ -\ file.txt
diff panics with this:
Backtrace...
$ RUST_BACKTRACE=full git diff --cached
thread 'main' panicked at 'byte index 2 is out of bounds of `-`', /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libcore/str/mod.rs:2052:47
stack backtrace:
0: 0x563bf4cca994 - backtrace::backtrace::libunwind::trace::h70b375bde27270b4
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/libunwind.rs:86
1: 0x563bf4cca994 - backtrace::backtrace::trace_unsynchronized::h396dd4a8c22b105f
at /cargo/registry/src/github.com-1ecc6299db9ec823/backtrace-0.3.46/src/backtrace/mod.rs:66
2: 0x563bf4cca994 - std::sys_common::backtrace::_print_fmt::he18b870d0c222866
at src/libstd/sys_common/backtrace.rs:78
3: 0x563bf4cca994 - <std::sys_common::backtrace::_print::DisplayBacktrace as core::fmt::Display>::fmt::hb01a2733282e3ed2
at src/libstd/sys_common/backtrace.rs:59
4: 0x563bf4cf3e6c - core::fmt::write::h90106c9d994b1fcb
at src/libcore/fmt/mod.rs:1069
5: 0x563bf4cc8293 - std::io::Write::write_fmt::hda3987c08ec43d0b
at src/libstd/io/mod.rs:1439
6: 0x563bf4ccd0d5 - std::sys_common::backtrace::_print::h0fc3670894ce6aaa
at src/libstd/sys_common/backtrace.rs:62
7: 0x563bf4ccd0d5 - std::sys_common::backtrace::print::haa35adc6f414ffd2
at src/libstd/sys_common/backtrace.rs:49
8: 0x563bf4ccd0d5 - std::panicking::default_hook::{{closure}}::ha7d6a7d9f72f7b9b
at src/libstd/panicking.rs:198
9: 0x563bf4ccce12 - std::panicking::default_hook::hc8bfdfb3de37ef02
at src/libstd/panicking.rs:218
10: 0x563bf4ccd732 - std::panicking::rust_panic_with_hook::h4fd82df629484fe1
at src/libstd/panicking.rs:511
11: 0x563bf4ccd31b - rust_begin_unwind
at src/libstd/panicking.rs:419
12: 0x563bf4cf2891 - core::panicking::panic_fmt::ha6a1c3f81a836c59
at src/libcore/panicking.rs:111
13: 0x563bf4cf6eaa - core::str::slice_error_fail::h0ec47dff71c3969c
at src/libcore/str/mod.rs:0
14: 0x563bf4c925e7 - core::str::traits::<impl core::slice::SliceIndex<str> for core::ops::range::RangeFrom<usize>>::index::{{closure}}::haf32b64db81a53f5
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libcore/str/mod.rs:2052
15: 0x563bf4c8a7f1 - core::option::Option<T>::unwrap_or_else::h1f8e4dd28a69aa32
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libcore/option.rs:428
16: 0x563bf4c92591 - core::str::traits::<impl core::slice::SliceIndex<str> for core::ops::range::RangeFrom<usize>>::index::h477e406a2a37d089
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libcore/str/mod.rs:2052
17: 0x563bf4c92762 - core::str::traits::<impl core::ops::index::Index<I> for str>::index::hc197edec7cb769d4
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libcore/str/mod.rs:1780
18: 0x563bf47a360c - delta::parse::get_file_extensions_from_diff_line::{{closure}}::h605f86cb790f7f20
at /home/dahooz/.cargo/registry/src/github.com-1ecc6299db9ec823/git-delta-0.1.1/src/parse.rs:90
19: 0x563bf47814ad - core::option::Option<T>::and_then::ha4a5b1a852160ca5
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libcore/option.rs:670
20: 0x563bf47a3534 - delta::parse::get_file_extensions_from_diff_line::h520e1d2b89db0b8b
at /home/dahooz/.cargo/registry/src/github.com-1ecc6299db9ec823/git-delta-0.1.1/src/parse.rs:90
21: 0x563bf47a22d5 - delta::parse::get_file_extension_from_diff_line::hd474d36af57452d3
at /home/dahooz/.cargo/registry/src/github.com-1ecc6299db9ec823/git-delta-0.1.1/src/parse.rs:7
22: 0x563bf478a2ce - delta::delta::delta::h4763ff412c69a473
at /home/dahooz/.cargo/registry/src/github.com-1ecc6299db9ec823/git-delta-0.1.1/src/delta.rs:84
23: 0x563bf47cd307 - delta::main::hd143810f70115604
at /home/dahooz/.cargo/registry/src/github.com-1ecc6299db9ec823/git-delta-0.1.1/src/main.rs:64
24: 0x563bf4799c4d - std::rt::lang_start::{{closure}}::hf794bfca89b78eef
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libstd/rt.rs:67
25: 0x563bf4ccdb78 - std::rt::lang_start_internal::{{closure}}::h9628629435f9467b
at src/libstd/rt.rs:52
26: 0x563bf4ccdb78 - std::panicking::try::do_call::he8163086ed9ecc4a
at src/libstd/panicking.rs:331
27: 0x563bf4ccdb78 - std::panicking::try::he633d7dd2c755e9f
at src/libstd/panicking.rs:274
28: 0x563bf4ccdb78 - std::panic::catch_unwind::h4ceabfa3bf55291a
at src/libstd/panic.rs:394
29: 0x563bf4ccdb78 - std::rt::lang_start_internal::hb7b86f6e95a1fcf5
at src/libstd/rt.rs:51
30: 0x563bf4799c17 - std::rt::lang_start::h9f70c5cd4ecc5638
at /rustc/2113659479a82ea69633b23ef710b58ab127755e/src/libstd/rt.rs:67
31: 0x563bf47cf75a - main
32: 0x7fb5933d4b97 - __libc_start_main
33: 0x563bf4718e5a - _start
34: 0x0 - <unknown>
$
Original git diff
shows:
$ git diff --cached
diff --git a/strange - file.txt b/strange - file.txt
new file mode 100644
index 0000000..9daeafb
--- /dev/null
+++ b/strange - file.txt
@@ -0,0 +1 @@
+test
$
In case git diff --cached
is not officially supported, delta
will create basically the same panic with git diff
after
git commit -m "init"
echo "test2" > "strange - file.txt"
git diff
CharlesGueunet
Metadata
Metadata
Assignees
Labels
good first issueGood for newcomersGood for newcomers