Skip to content

Commit

Permalink
Refactor type decode to use Stream.duplicate/2
Browse files Browse the repository at this point in the history
  • Loading branch information
fedor-ivn committed Jun 21, 2024
1 parent 243892a commit 44b9f9b
Showing 1 changed file with 4 additions and 4 deletions.
8 changes: 4 additions & 4 deletions lib/abi/type_decoder.ex
Original file line number Diff line number Diff line change
Expand Up @@ -253,7 +253,7 @@ defmodule ABI.TypeDecoder do
end

defp decode_type({:array, type, size}, data) do
types = Stream.repeatedly(fn -> type end) |> Stream.take(size)
types = Stream.duplicate(type, size)
{tuple, bytes} = decode_type({:tuple, types}, data)

{Tuple.to_list(tuple), bytes}
Expand Down Expand Up @@ -298,9 +298,9 @@ defmodule ABI.TypeDecoder do
defp decode_type({:array, type}, data, full_data) do
{offset, rest_bytes} = decode_uint(data, 256)
<<_padding::binary-size(offset), rest_data::binary>> = full_data
{count, bytes} = decode_uint(rest_data, 256)
{size, bytes} = decode_uint(rest_data, 256)

types = Stream.repeatedly(fn -> type end) |> Stream.take(count)
types = Stream.duplicate(type, size)

{tuple, _bytes} = decode_type({:tuple, types}, bytes)
{Tuple.to_list(tuple), rest_bytes}
Expand All @@ -310,7 +310,7 @@ defmodule ABI.TypeDecoder do
{offset, rest_bytes} = decode_uint(data, 256)
<<_padding::binary-size(offset), rest_data::binary>> = full_data

types = Stream.repeatedly(fn -> type end) |> Stream.take(size)
types = Stream.duplicate(type, size)

{tuple, _} = decode_type({:tuple, types}, rest_data)

Expand Down

0 comments on commit 44b9f9b

Please sign in to comment.