Skip to content

Commit 78e02d2

Browse files
Bencepapabenoitc
authored andcommitted
store/3 creates invalid dict when called with list of Values, causing function_clause in to_list (#562)
1 parent 14336c2 commit 78e02d2

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

src/hackney_headers_new.erl

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -69,7 +69,7 @@ store(Key, Values, {N, Headers}) when is_list(Values) ->
6969
KL = ?kl(Key),
7070
lists:foldl(
7171
fun(V, {I, H}) ->
72-
{I + 1, dict:append(KL, [{I, Key, V}], H)}
72+
{I + 1, dict:append(KL, {I, Key, V}, H)}
7373
end,
7474
{N, dict:store(KL, [], Headers)},
7575
Values

test/hackney_headers_new_test.erl

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,12 +39,16 @@ key_type_test() ->
3939
store_test() ->
4040
A = [{<<"Foo">>, <<"Bar">>}],
4141
B = [{<<"Bar">>, <<"Baz">>}],
42+
C = [{<<"Baz">>, <<"Bar">>}],
4243
Ha = hackney_headers_new:from_list(A),
4344
Hb = hackney_headers_new:from_list(B),
44-
45+
Hc = hackney_headers_new:from_list(C),
46+
4547
Expected1 = [{<<"Foo">>, <<"Bar">>}, {<<"Bar">>, <<"Baz">>}],
4648
Expected2 = [{<<"Bar">>, <<"Baz">>}, {<<"Foo">>, <<"Bar">>}],
47-
49+
Expected3 = [{<<"Baz">>, <<"Bar">>},
50+
{<<"Foo">>, <<"Bar">>},
51+
{<<"Foo">>, <<"Baz">>}],
4852

4953
?assertEqual(
5054
Expected1,
@@ -53,6 +57,12 @@ store_test() ->
5357
?assertEqual(
5458
Expected2,
5559
hackney_headers_new:to_list(hackney_headers_new:store(<<"Foo">>, <<"Bar">>, Hb))
60+
),
61+
?assertEqual(
62+
Expected3,
63+
hackney_headers_new:to_list(hackney_headers_new:store(<<"Foo">>,
64+
[<<"Bar">>, <<"Baz">>],
65+
Hc))
5666
).
5767

5868
merge_test() ->

0 commit comments

Comments
 (0)