diff --git a/src/tree.rs b/src/tree.rs index b7dd6d4..4d4695b 100644 --- a/src/tree.rs +++ b/src/tree.rs @@ -319,7 +319,7 @@ impl Node { // Similarly, we are inserting a parameter suffix and this node already has a parameter // prefix, we have a prefix-suffix conflict. - let suffix = remaining.slice_off(wildcard.end); + let suffix = remaining.slice_until(terminator).slice_off(wildcard.end); if !matches!(*suffix, b"" | b"/") && node.prefix_wild_child_in_segment() { return Err(InsertError::conflict(&route, remaining, node)); } diff --git a/tests/insert.rs b/tests/insert.rs index 47fc3a2..44864d4 100644 --- a/tests/insert.rs +++ b/tests/insert.rs @@ -255,6 +255,8 @@ fn prefix_suffix_conflict() { ("/x15/prefix{a}", Ok(())), ("/x16/{*rest}", Ok(())), ("/x16/prefix{a}suffix", Ok(())), + ("/x17/prefix{a}/z", Ok(())), + ("/x18/prefix{a}/z", Ok(())), ]) .run() }