From 3928cd133b33d112b6619439acbc6e3ff80e7460 Mon Sep 17 00:00:00 2001 From: DoMyJob <46307927+DoMyJob@users.noreply.github.com> Date: Wed, 23 Jan 2019 17:44:46 +0800 Subject: [PATCH] Use unsafe.Offsetof() instead of magic number. (#3) * Use Offsetof() instead of magic number. * Remove useless comments. --- common/header_test.go | 46 +++++++++++++++++++++++++++++++++++++++++++ yottadisk.go | 4 ++-- 2 files changed, 48 insertions(+), 2 deletions(-) create mode 100644 common/header_test.go diff --git a/common/header_test.go b/common/header_test.go new file mode 100644 index 0000000..0a1b176 --- /dev/null +++ b/common/header_test.go @@ -0,0 +1,46 @@ +package common + +import ( + "fmt" + "testing" + "unsafe" +) + +func TestHeaderPrint(t *testing.T) { + header := Header{} + + infoMsg := ` + header layout info: size: %d, align: %d + field offset size + --------------+--------------+-------- + Tag %03d %d + Version %03d %d + DiskCaps %03d %d + DataBlockSize %03d %d + RangeCaps %03d %d + RangeCoverage %03d %d + RangeOffset %03d %d + HashOffset %03d %d + DataOffset %03d %d + DataCount %03d %d + AllocOffset %03d %d + ResolveOffset %03d %d + Reserved %03d %d + ` + + fmt.Printf(infoMsg, + unsafe.Sizeof(header), unsafe.Alignof(header), + unsafe.Offsetof(header.Tag), unsafe.Sizeof(header.Tag), + unsafe.Offsetof(header.Version), unsafe.Sizeof(header.Version), + unsafe.Offsetof(header.DiskCaps), unsafe.Sizeof(header.DiskCaps), + unsafe.Offsetof(header.DataBlockSize), unsafe.Sizeof(header.DataBlockSize), + unsafe.Offsetof(header.RangeCaps), unsafe.Sizeof(header.RangeCaps), + unsafe.Offsetof(header.RangeCoverage), unsafe.Sizeof(header.RangeCoverage), + unsafe.Offsetof(header.RangeOffset), unsafe.Sizeof(header.RangeOffset), + unsafe.Offsetof(header.HashOffset), unsafe.Sizeof(header.HashOffset), + unsafe.Offsetof(header.DataOffset), unsafe.Sizeof(header.DataOffset), + unsafe.Offsetof(header.DataCount), unsafe.Sizeof(header.DataCount), + unsafe.Offsetof(header.AllocOffset), unsafe.Sizeof(header.AllocOffset), + unsafe.Offsetof(header.ResolveOffset), unsafe.Sizeof(header.ResolveOffset), + unsafe.Offsetof(header.Reserved), unsafe.Sizeof(header.Reserved)) +} \ No newline at end of file diff --git a/yottadisk.go b/yottadisk.go index c5d4ed6..5c85b1b 100644 --- a/yottadisk.go +++ b/yottadisk.go @@ -100,8 +100,8 @@ func (disk *YottaDisk) writeData(idx uint32, key ydcommon.IndexTableKey, dataOff return err } - // Update data count. WARNING: use magic number - writer.Seek(48, io.SeekStart) + // Update data count. + writer.Seek((int64)(unsafe.Offsetof(disk.meta.DataCount)), io.SeekStart) _, err = writer.Write(dcBuf.Bytes()) if err != nil { return err -- GitLab