From 302c1c211d1f06e31f1d0c1d6824b2ab8eb267bb Mon Sep 17 00:00:00 2001 From: Thomas Arts Date: Tue, 28 May 2019 18:09:22 +0200 Subject: [PATCH] Erik's fix to LONG strings --- src/aeb_fate_encoding.erl | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/aeb_fate_encoding.erl b/src/aeb_fate_encoding.erl index 215624a..1a73809 100644 --- a/src/aeb_fate_encoding.erl +++ b/src/aeb_fate_encoding.erl @@ -128,7 +128,9 @@ serialize(String) when ?IS_FATE_STRING(String), ?FATE_STRING_SIZE(String) > 0, ?FATE_STRING_SIZE(String) >= ?SHORT_STRING_SIZE -> Bytes = ?FATE_STRING_VALUE(String), - <>; + <>; serialize(?FATE_ADDRESS(Address)) when is_binary(Address) -> <>; serialize(?FATE_HASH(Address)) when is_binary(Address) -> @@ -321,8 +323,11 @@ deserialize2(<>) -> {Bint, Rest2} = aeser_rlp:decode_one(Rest), {?FATE_BITS(binary:decode_unsigned(Bint)), Rest2}; deserialize2(<>) -> - {String, Rest2} = aeser_rlp:decode_one(Rest), - {?MAKE_FATE_STRING(String), Rest2}; + {S, Rest2} = deserialize_one(Rest), + Size = S + ?SHORT_STRING_SIZE, + String = binary:part(Rest2, 0, Size), + Rest3 = binary:part(Rest2, byte_size(Rest2), - (byte_size(Rest2) - Size)), + {?MAKE_FATE_STRING(String), Rest3}; deserialize2(<>) -> String = binary:part(Rest, 0, S), Rest2 = binary:part(Rest, byte_size(Rest), - (byte_size(Rest) - S)),