diff --git a/src/tree.rs b/src/tree.rs index 4d4695b..f7c9a2d 100644 --- a/src/tree.rs +++ b/src/tree.rs @@ -223,6 +223,11 @@ impl Node { if *common == *child.prefix && remaining == *b"/" { extra_trailing_slash = true; } + } else { + let (common, remaining) = child.prefix.split_at(suffix.len()); + if *common == **suffix && remaining == *b"/" { + extra_trailing_slash = true; + } } } diff --git a/tests/insert.rs b/tests/insert.rs index 44864d4..0587fdb 100644 --- a/tests/insert.rs +++ b/tests/insert.rs @@ -257,6 +257,10 @@ fn prefix_suffix_conflict() { ("/x16/prefix{a}suffix", Ok(())), ("/x17/prefix{a}/z", Ok(())), ("/x18/prefix{a}/z", Ok(())), + ("/x19/f{a}o", Ok(())), + ("/x19/f{a}o/{*path}", Ok(())), + ("/x20/f{a}o/{*path}", Ok(())), + ("/x20/f{a}o", Ok(())), ]) .run() }