From fd100fd8425b82c09eba2e291d1dcbfcb1242774 Mon Sep 17 00:00:00 2001 From: Luke Shumaker Date: Sun, 5 Jun 2022 10:36:03 -0600 Subject: more, fixup array init --- pkg/btrfs/btrfsitem/item_chunk.go | 1 + pkg/btrfs/btrfsitem/item_dir.go | 1 + pkg/btrfs/btrfsitem/item_inoderef.go | 1 + pkg/btrfs/btrfsitem/item_uuid.go | 10 ++++------ 4 files changed, 7 insertions(+), 6 deletions(-) (limited to 'pkg/btrfs/btrfsitem') diff --git a/pkg/btrfs/btrfsitem/item_chunk.go b/pkg/btrfs/btrfsitem/item_chunk.go index 826ecc6..eae8339 100644 --- a/pkg/btrfs/btrfsitem/item_chunk.go +++ b/pkg/btrfs/btrfsitem/item_chunk.go @@ -34,6 +34,7 @@ func (chunk *Chunk) UnmarshalBinary(dat []byte) (int, error) { if err != nil { return n, err } + chunk.Stripes = nil for i := 0; i < int(chunk.NumStripes); i++ { var stripe ChunkStripe _n, err := binstruct.Unmarshal(dat[n:], &stripe) diff --git a/pkg/btrfs/btrfsitem/item_dir.go b/pkg/btrfs/btrfsitem/item_dir.go index afef12d..6814041 100644 --- a/pkg/btrfs/btrfsitem/item_dir.go +++ b/pkg/btrfs/btrfsitem/item_dir.go @@ -10,6 +10,7 @@ import ( type DirList []Dir // DIR_ITEM=84, DIR_INDEX=96, XATTR_ITEM=24 func (o *DirList) UnmarshalBinary(dat []byte) (int, error) { + *o = nil n := 0 for n < len(dat) { var ref Dir diff --git a/pkg/btrfs/btrfsitem/item_inoderef.go b/pkg/btrfs/btrfsitem/item_inoderef.go index e59c4b3..39b7738 100644 --- a/pkg/btrfs/btrfsitem/item_inoderef.go +++ b/pkg/btrfs/btrfsitem/item_inoderef.go @@ -7,6 +7,7 @@ import ( type InodeRefList []InodeRef // INODE_REF=12 func (o *InodeRefList) UnmarshalBinary(dat []byte) (int, error) { + *o = nil n := 0 for n < len(dat) { var ref InodeRef diff --git a/pkg/btrfs/btrfsitem/item_uuid.go b/pkg/btrfs/btrfsitem/item_uuid.go index 894ccff..d66e102 100644 --- a/pkg/btrfs/btrfsitem/item_uuid.go +++ b/pkg/btrfs/btrfsitem/item_uuid.go @@ -7,12 +7,10 @@ import ( // The Key for this item is a UUID, and the item is a list of // subvolume IDs (ObjectIDs) that that UUID maps to. -type UUIDMap struct { // UUID_SUBVOL=251 UUID_RECEIVED_SUBVOL=252 - SubvolIDs []internal.ObjID -} +type UUIDMap []internal.ObjID // UUID_SUBVOL=251 UUID_RECEIVED_SUBVOL=252 func (o *UUIDMap) UnmarshalBinary(dat []byte) (int, error) { - o.SubvolIDs = nil + *o = nil var n int for len(dat) > n { var subvolID internal.ObjID @@ -21,14 +19,14 @@ func (o *UUIDMap) UnmarshalBinary(dat []byte) (int, error) { if err != nil { return n, err } - o.SubvolIDs = append(o.SubvolIDs, subvolID) + *o = append(*o, subvolID) } return n, nil } func (o UUIDMap) MarshalBinary() ([]byte, error) { var ret []byte - for _, subvolID := range o.SubvolIDs { + for _, subvolID := range o { bs, err := binstruct.Marshal(subvolID) ret = append(ret, bs...) if err != nil { -- cgit v1.2.3-2-g168b