diff --git a/httplib.h b/httplib.h index 8928c929..c231774b 100644 --- a/httplib.h +++ b/httplib.h @@ -1344,7 +1344,7 @@ public: size_type erase(const std::string &key) { auto before = entries_.size(); entries_.erase(std::remove_if(entries_.begin(), entries_.end(), - [&](const value_type &entry) { + [key](const value_type &entry) { return keys_equal(entry.first, key); }), entries_.end()); diff --git a/test/test.cc b/test/test.cc index 042e6209..c3ef8e94 100644 --- a/test/test.cc +++ b/test/test.cc @@ -2392,6 +2392,13 @@ TEST(HeadersOrderTest, ErasingByNameKeepsTheRemainingOrder) { EXPECT_EQ("B=2 C=4 ", entries_to_string(headers)); } +TEST(HeadersOrderTest, ErasingAnAliasedNameKeepsTheRemainingOrder) { + Headers headers = {{"A", "1"}, {"B", "2"}, {"a", "3"}, {"B", "4"}}; + + EXPECT_EQ(2U, headers.erase(headers.begin()->first)); + EXPECT_EQ("B=2 B=4 ", entries_to_string(headers)); +} + TEST(HeadersOrderTest, EmplaceFrontPrepends) { Headers headers = {{"Accept", "*/*"}, {"User-Agent", "test"}}; headers.emplace_front("Host", "example.com");