fix(url): fix panic when questionmark is in fragment
This commit is contained in:
18
src/uri.rs
18
src/uri.rs
@@ -201,7 +201,11 @@ fn parse_query(s: &str) -> Option<usize> {
|
|||||||
Some(i) => {
|
Some(i) => {
|
||||||
let frag_pos = s.find('#').unwrap_or(s.len());
|
let frag_pos = s.find('#').unwrap_or(s.len());
|
||||||
|
|
||||||
return Some(frag_pos - i - 1);
|
if frag_pos < i + 1 {
|
||||||
|
None
|
||||||
|
} else {
|
||||||
|
Some(frag_pos - i - 1)
|
||||||
|
}
|
||||||
},
|
},
|
||||||
None => None,
|
None => None,
|
||||||
}
|
}
|
||||||
@@ -413,6 +417,18 @@ test_parse! {
|
|||||||
port = Some(443),
|
port = Some(443),
|
||||||
}
|
}
|
||||||
|
|
||||||
|
test_parse! {
|
||||||
|
test_uri_parse_fragment_questionmark,
|
||||||
|
"http://127.0.0.1/#?",
|
||||||
|
|
||||||
|
scheme = Some("http"),
|
||||||
|
authority = Some("127.0.0.1"),
|
||||||
|
path = "/",
|
||||||
|
query = None,
|
||||||
|
fragment = Some("?"),
|
||||||
|
port = None,
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_uri_parse_error() {
|
fn test_uri_parse_error() {
|
||||||
fn err(s: &str) {
|
fn err(s: &str) {
|
||||||
|
|||||||
Reference in New Issue
Block a user