diff --git a/src/aeb_fate_encoding.erl b/src/aeb_fate_encoding.erl index 22603b2..8d98566 100644 --- a/src/aeb_fate_encoding.erl +++ b/src/aeb_fate_encoding.erl @@ -288,13 +288,9 @@ serialize_integer(I) when ?IS_FATE_INTEGER(I) -> serialize_bits(B) when is_integer(B) -> Abs = abs(B), - Sign = case B < 0 of - true -> ?NEG_SIGN; - false -> ?POS_SIGN - end, if - Sign =:= ?NEG_SIGN -> <>; - Sign =:= ?POS_SIGN -> <> + B < 0 -> <>; + B >= 0 -> <> end. -spec deserialize(binary()) -> aeb_fate_data:fate_type(). @@ -307,7 +303,9 @@ deserialize_one(B) -> deserialize2(B). deserialize2(<>) -> {?MAKE_FATE_INTEGER(I), Rest}; deserialize2(<>) -> - {?MAKE_FATE_INTEGER(-I), Rest}; + if I =/= 0 -> {?MAKE_FATE_INTEGER(-I), Rest}; + I == 0 -> error({illegal_sign, I}) + end; deserialize2(<>) -> {Bint, Rest2} = aeser_rlp:decode_one(Rest), {?MAKE_FATE_INTEGER(-binary:decode_unsigned(Bint) - ?SMALL_INT_SIZE),