Compatibility with R17 in mod_block_strangers

This commit is contained in:
Alexey Shchepin 2017-01-23 19:04:22 +03:00
parent 43bfa0efbc
commit 8b5e6e4a13
2 changed files with 21 additions and 1 deletions

View File

@ -88,6 +88,7 @@
{if_var_true, elixir, {d, 'ELIXIR_ENABLED'}},
{if_var_true, erlang_deprecated_types, {d, 'ERL_DEPRECATED_TYPES'}},
{if_version_above, "18", {d, 'STRONG_RAND_BYTES'}},
{if_version_above, "17", {d, 'GB_SETS_ITERATOR_FROM'}},
{if_var_true, hipe, native},
{src_dirs, [asn1, src,
{if_var_true, tools, tools},

View File

@ -92,11 +92,30 @@ filter_packet(Acc) ->
Acc.
sets_bare_member({U, S, <<"">>} = LBJID, Set) ->
case ?SETS:next(?SETS:iterator_from(LBJID, Set)) of
case ?SETS:next(sets_iterator_from(LBJID, Set)) of
{{U, S, _}, _} -> true;
_ -> false
end.
-ifdef(GB_SETS_ITERATOR_FROM).
sets_iterator_from(Element, Set) ->
?SETS:iterator_from(Element, Set).
-else.
%% Copied from gb_sets.erl
%% TODO: Remove after dropping R17 support
sets_iterator_from(S, {_, T}) ->
iterator_from(S, T, []).
iterator_from(S, {K, _, T}, As) when K < S ->
iterator_from(S, T, As);
iterator_from(_, {_, nil, _} = T, As) ->
[T | As];
iterator_from(S, {_, L, _} = T, As) ->
iterator_from(S, L, [T | As]);
iterator_from(_, nil, As) ->
As.
-endif.
depends(_Host, _Opts) ->
[].