@cryptotaxi247 / kubo / commits / e6545a24b

fix truncating when already at the correct size

fixes #4518 License: MIT Signed-off-by: Steven Allen <steven@stebalien.com>

Steven Allen committed Dec 21, 2017 at 17:33 UTC e6545a24b2ba04deec37b18ad24eb05fc7e2a3ff
2 files changed +28
mfs/mfs_test.go
+25
@@ -1111,3 +1111,28 @@ func TestFileDescriptors(t *testing.T) {
1111 t.Fatal(err)
1112 }
1113 }
1114 +
1115 +func TestTruncateAtSize(t *testing.T) {
1116 + ctx, cancel := context.WithCancel(context.Background())
1117 + defer cancel()
1118 + ds, rt := setupRoot(ctx, t)
1119 +
1120 + dir := rt.GetDirectory()
1121 +
1122 + nd := dag.NodeWithData(ft.FilePBData(nil, 0))
1123 + fi, err := NewFile("test", nd, dir, ds)
1124 + if err != nil {
1125 + t.Fatal(err)
1126 + }
1127 +
1128 + fd, err := fi.Open(OpenReadWrite, true)
1129 + if err != nil {
1130 + t.Fatal(err)
1131 + }
1132 + defer fd.Close()
1133 + _, err = fd.Write([]byte("test"))
1134 + if err != nil {
1135 + t.Fatal(err)
1136 + }
1137 + fd.Truncate(4)
1138 +}
unixfs/mod/dagmodifier.go
+3
@@ -481,6 +481,9 @@ func (dm *DagModifier) Truncate(size int64) error {
481 if err != nil {
482 return err
483 }
484 + if size == int64(realSize) {
485 + return nil
486 + }
487
488 // Truncate can also be used to expand the file
489 if size > int64(realSize) {