Fix typo in equal_range

fix #688
This commit is contained in:
Vinnie Falco
2017-07-27 19:56:15 -07:00
parent cbb47a0ffd
commit 0fb562a4d7
3 changed files with 23 additions and 3 deletions

View File

@ -1,6 +1,7 @@
Version 90:
* Fix websocket read of zero length message
* Fix typo in equal_range
--------------------------------------------------------------------------------

View File

@ -723,11 +723,13 @@ basic_fields<Allocator>::
equal_range(string_view name) const ->
std::pair<const_iterator, const_iterator>
{
auto const result =
auto result =
set_.equal_range(name, key_compare{});
if(result.first == result.second)
return {list_.end(), list_.end()};
return {
list_.iterator_to(result->first),
list_.iterator_to(result->second)};
list_.iterator_to(*result.first),
++list_.iterator_to(*(--result.second))};
}
//------------------------------------------------------------------------------

View File

@ -403,6 +403,23 @@ public:
BEAST_EXPECT(f.count("dd") == 1);
BEAST_EXPECT(f["dd"] == "-");
}
// equal_range
{
fields f;
f.insert("E", 1);
f.insert("B", 2);
f.insert("D", 3);
f.insert("B", 4);
f.insert("C", 5);
f.insert("B", 6);
f.insert("A", 7);
auto const rng = f.equal_range("B");
BEAST_EXPECT(std::distance(rng.first, rng.second) == 3);
BEAST_EXPECT(std::next(rng.first, 0)->value() == "2");
BEAST_EXPECT(std::next(rng.first, 1)->value() == "4");
BEAST_EXPECT(std::next(rng.first, 2)->value() == "6");
}
}
struct sized_body