| ... | ... | @@ -171,6 +171,9 @@ pub fn parseWithoutScheme(text: []const u8) ParseError!Uri { |
| 171 | 171 | } |
| 172 | 172 | } |
| 173 | 173 | |
| 174 | // only possible if uri consists of only `userinfo@` |
| 175 | if (start_of_host >= authority.len) break :a; |
| 176 | |
| 174 | 177 | var end_of_host: usize = authority.len; |
| 175 | 178 | |
| 176 | 179 | if (authority[start_of_host] == '[') { // IPv6 |
| ... | ... | @@ -565,6 +568,7 @@ test "authority" { |
| 565 | 568 | try std.testing.expectEqualSlices(u8, "hostname", (try parse("scheme://userinfo@hostname")).host.?); |
| 566 | 569 | try std.testing.expectEqualSlices(u8, "userinfo", (try parse("scheme://userinfo@hostname")).user.?); |
| 567 | 570 | try std.testing.expectEqual(@as(?[]const u8, null), (try parse("scheme://userinfo@hostname")).password); |
| 571 | try std.testing.expectEqual(@as(?[]const u8, null), (try parse("scheme://userinfo@")).host); |
| 568 | 572 | |
| 569 | 573 | try std.testing.expectEqualSlices(u8, "hostname", (try parse("scheme://user:password@hostname")).host.?); |
| 570 | 574 | try std.testing.expectEqualSlices(u8, "user", (try parse("scheme://user:password@hostname")).user.?); |