From 89f0a5bcad28371c1305a72e764422cfd6e6cd4c Mon Sep 17 00:00:00 2001
From: Hans Moog <hm@mkjc.net>
Date: Wed, 4 Mar 2020 11:01:50 +0100
Subject: [PATCH] Fix: fixed broken marshalUtil

---
 packages/binary/marshalutil/marshalutil.go                | 2 +-
 packages/binary/valuetransfers/payload/payload.go         | 2 +-
 .../binary/valuetransfers/payload/transfer/transfer.go    | 4 ++--
 packages/binary/valuetransfers/test/payload_test.go       | 4 ++--
 packages/binary/valuetransfers/transfer.go                | 8 ++------
 5 files changed, 8 insertions(+), 12 deletions(-)

diff --git a/packages/binary/marshalutil/marshalutil.go b/packages/binary/marshalutil/marshalutil.go
index 8d167082..733ee12f 100644
--- a/packages/binary/marshalutil/marshalutil.go
+++ b/packages/binary/marshalutil/marshalutil.go
@@ -40,7 +40,7 @@ func New(args ...interface{}) *MarshalUtil {
 
 func (util *MarshalUtil) Parse(parser func(data []byte) (interface{}, error, int)) (result interface{}, err error) {
 	result, err, readBytes := parser(util.bytes[util.readOffset:])
-	if err != nil {
+	if err == nil {
 		util.ReadSeek(util.readOffset + readBytes)
 	}
 
diff --git a/packages/binary/valuetransfers/payload/payload.go b/packages/binary/valuetransfers/payload/payload.go
index deee188a..7ffe6aa8 100644
--- a/packages/binary/valuetransfers/payload/payload.go
+++ b/packages/binary/valuetransfers/payload/payload.go
@@ -65,7 +65,7 @@ func FromBytes(bytes []byte, optionalTargetObject ...*Payload) (result *Payload,
 	result.branchPayloadId = payloadid.New(parsedBranchPayloadId)
 
 	// parse transfer
-	parsedTransfer, err := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) { return transfer.FromBytes(data) })
+	parsedTransfer, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return transfer.FromBytes(data) })
 	if err != nil {
 		return
 	}
diff --git a/packages/binary/valuetransfers/payload/transfer/transfer.go b/packages/binary/valuetransfers/payload/transfer/transfer.go
index 113465c5..af935706 100644
--- a/packages/binary/valuetransfers/payload/transfer/transfer.go
+++ b/packages/binary/valuetransfers/payload/transfer/transfer.go
@@ -51,14 +51,14 @@ func FromBytes(bytes []byte, optionalTargetObject ...*Transfer) (result *Transfe
 	marshalUtil := marshalutil.New(bytes)
 
 	// unmarshal inputs
-	parsedInputs, err := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) { return inputs.FromBytes(data) })
+	parsedInputs, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return inputs.FromBytes(data) })
 	if err != nil {
 		return
 	}
 	result.inputs = parsedInputs.(*inputs.Inputs)
 
 	// unmarshal outputs
-	parsedOutputs, err := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) { return outputs.FromBytes(data) })
+	parsedOutputs, err := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return outputs.FromBytes(data) })
 	if err != nil {
 		return
 	}
diff --git a/packages/binary/valuetransfers/test/payload_test.go b/packages/binary/valuetransfers/test/payload_test.go
index 4697d53a..e7b023f6 100644
--- a/packages/binary/valuetransfers/test/payload_test.go
+++ b/packages/binary/valuetransfers/test/payload_test.go
@@ -22,8 +22,8 @@ func TestPayload(t *testing.T) {
 		payloadid.Empty,
 		transfer.New(
 			inputs.New(
-				transferoutputid.New(address.New([]byte("test")), transferid.New([]byte("test"))),
-				transferoutputid.New(address.New([]byte("test")), transferid.New([]byte("test1"))),
+				transferoutputid.New(address.New([]byte("input_address1")), transferid.New([]byte("transfer1"))),
+				transferoutputid.New(address.New([]byte("input_address2")), transferid.New([]byte("transfer2"))),
 			),
 
 			outputs.New(map[address.Address][]*coloredbalance.ColoredBalance{
diff --git a/packages/binary/valuetransfers/transfer.go b/packages/binary/valuetransfers/transfer.go
index 91eb0583..6cd4df8c 100644
--- a/packages/binary/valuetransfers/transfer.go
+++ b/packages/binary/valuetransfers/transfer.go
@@ -48,9 +48,7 @@ func TransferFromBytes(bytes []byte, optionalTargetObject ...*Transfer) (result
 	marshalUtil := marshalutil.New(bytes)
 
 	// unmarshal inputs
-	if parseResult, inputsErr := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) {
-		return TransferInputsFromBytes(data)
-	}); inputsErr != nil {
+	if parseResult, inputsErr := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return TransferInputsFromBytes(data) }); inputsErr != nil {
 		err = inputsErr
 
 		return
@@ -59,9 +57,7 @@ func TransferFromBytes(bytes []byte, optionalTargetObject ...*Transfer) (result
 	}
 
 	// unmarshal outputs
-	if parseResult, outputsErr := marshalUtil.Parse(func(data []byte) (result interface{}, err error, consumedBytes int) {
-		return OutputsFromBytes(data)
-	}); outputsErr != nil {
+	if parseResult, outputsErr := marshalUtil.Parse(func(data []byte) (interface{}, error, int) { return OutputsFromBytes(data) }); outputsErr != nil {
 		err = outputsErr
 
 		return
-- 
GitLab