From 72f37ea552cc5781b3e76d4d9e01fea695791f7e Mon Sep 17 00:00:00 2001 From: Hans Svensson Date: Thu, 13 Apr 2023 12:52:56 +0200 Subject: [PATCH] Encode/decode bytes()/{bytes, any} as bytes(-1) --- src/aeb_fate_encoding.erl | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/aeb_fate_encoding.erl b/src/aeb_fate_encoding.erl index 681aa36..d8bfb46 100644 --- a/src/aeb_fate_encoding.erl +++ b/src/aeb_fate_encoding.erl @@ -238,6 +238,8 @@ serialize_type({tuple, Ts}) -> N when N =< 255 -> [?TYPE_TUPLE, N | [serialize_type(T) || T <- Ts]] end; +serialize_type({bytes, any}) -> + [?TYPE_BYTES | binary_to_list(serialize_integer(-1))]; serialize_type({bytes, N}) when 0 =< N -> [?TYPE_BYTES | binary_to_list(serialize_integer(N))]; serialize_type(address) -> [?TYPE_OBJECT, ?OTYPE_ADDRESS]; @@ -270,8 +272,12 @@ deserialize_type(<>) -> {{tuple, Ts}, Rest2}; deserialize_type(<>) -> {N, Rest2} = deserialize_one(Rest), - true = is_integer(N) andalso N >= 0, - {{bytes, N}, Rest2}; + true = is_integer(N), + if N == -1 -> + {{bytes, any}, Rest2}; + 0 =< N -> + {{bytes, N}, Rest2} + end; deserialize_type(<>) -> case ObjectType of ?OTYPE_ADDRESS -> {address, Rest};