From 0004930939a98a74d28e9ade1ea84b3e038c777b Mon Sep 17 00:00:00 2001
From: Hans Moog <hm@mkjc.net>
Date: Wed, 17 Jun 2020 09:48:38 +0200
Subject: [PATCH] Fix: fixed missing marshaling of output bools

---
 .../valuetransfers/packages/tangle/output.go  | 26 ++++++++++++++++---
 1 file changed, 23 insertions(+), 3 deletions(-)

diff --git a/dapps/valuetransfers/packages/tangle/output.go b/dapps/valuetransfers/packages/tangle/output.go
index b2685d71..3771a853 100644
--- a/dapps/valuetransfers/packages/tangle/output.go
+++ b/dapps/valuetransfers/packages/tangle/output.go
@@ -236,7 +236,7 @@ func (output *Output) ConsumerCount() int {
 	return output.consumerCount
 }
 
-// Preferred returns true if the output is considered to be the first valid spender of all of its Inputs.
+// Preferred returns true if the output belongs to a preferred transaction.
 func (output *Output) Preferred() (result bool) {
 	output.preferredMutex.RLock()
 	defer output.preferredMutex.RUnlock()
@@ -295,7 +295,7 @@ func (output *Output) setFinalized(finalized bool) (modified bool) {
 	return
 }
 
-// Finalized returns true, if the decision if this output is liked or not has been finalized by consensus already.
+// Finalized returns true, if the decision if this output is preferred or not has been finalized by consensus already.
 func (output *Output) Finalized() bool {
 	output.finalizedMutex.RLock()
 	defer output.finalizedMutex.RUnlock()
@@ -428,12 +428,17 @@ func (output *Output) ObjectStorageValue() []byte {
 	balanceCount := len(output.balances)
 
 	// initialize helper
-	marshalUtil := marshalutil.New(branchmanager.BranchIDLength + marshalutil.BOOL_SIZE + marshalutil.TIME_SIZE + transaction.IDLength + marshalutil.UINT32_SIZE + marshalutil.UINT32_SIZE + balanceCount*balance.Length)
+	marshalUtil := marshalutil.New(branchmanager.BranchIDLength + 6*marshalutil.BOOL_SIZE + marshalutil.TIME_SIZE + transaction.IDLength + marshalutil.UINT32_SIZE + marshalutil.UINT32_SIZE + balanceCount*balance.Length)
 	marshalUtil.WriteBytes(output.branchID.Bytes())
 	marshalUtil.WriteBool(output.solid)
 	marshalUtil.WriteTime(output.solidificationTime)
 	marshalUtil.WriteBytes(output.firstConsumer.Bytes())
 	marshalUtil.WriteUint32(uint32(output.consumerCount))
+	marshalUtil.WriteBool(output.Preferred())
+	marshalUtil.WriteBool(output.Finalized())
+	marshalUtil.WriteBool(output.Liked())
+	marshalUtil.WriteBool(output.Confirmed())
+	marshalUtil.WriteBool(output.Rejected())
 	marshalUtil.WriteUint32(uint32(balanceCount))
 	for _, balanceToMarshal := range output.balances {
 		marshalUtil.WriteBytes(balanceToMarshal.Bytes())
@@ -462,6 +467,21 @@ func (output *Output) UnmarshalObjectStorageValue(data []byte) (consumedBytes in
 	if err != nil {
 		return
 	}
+	if output.preferred, err = marshalUtil.ReadBool(); err != nil {
+		return
+	}
+	if output.finalized, err = marshalUtil.ReadBool(); err != nil {
+		return
+	}
+	if output.liked, err = marshalUtil.ReadBool(); err != nil {
+		return
+	}
+	if output.confirmed, err = marshalUtil.ReadBool(); err != nil {
+		return
+	}
+	if output.rejected, err = marshalUtil.ReadBool(); err != nil {
+		return
+	}
 	output.consumerCount = int(consumerCount)
 	balanceCount, err := marshalUtil.ReadUint32()
 	if err != nil {
-- 
GitLab