diff --git a/samples/memfs/inode.go b/samples/memfs/inode.go index b011eb5..a878fcc 100644 --- a/samples/memfs/inode.go +++ b/samples/memfs/inode.go @@ -377,14 +377,19 @@ func (inode *inode) SetAttributes(size *uint64) { // Update the modification time. inode.attributes.Mtime = inode.clock.Now() - // Do we need to truncate? + // Truncate? if size != nil { intSize := int(*size) + + // Update contents. if intSize <= len(inode.contents) { inode.contents = inode.contents[:intSize] } else { padding := make([]byte, intSize-len(inode.contents)) inode.contents = append(inode.contents, padding...) } + + // Update attributes. + inode.attributes.Size = *size } } diff --git a/samples/memfs/memfs_test.go b/samples/memfs/memfs_test.go index 76dadec..323e3c7 100644 --- a/samples/memfs/memfs_test.go +++ b/samples/memfs/memfs_test.go @@ -875,6 +875,11 @@ func (t *MemFSTest) Truncate_Smaller() { err = f.Truncate(2) AssertEq(nil, err) + // Stat it. + fi, err := f.Stat() + AssertEq(nil, err) + ExpectEq(2, fi.Size()) + // Read the contents. contents, err := ioutil.ReadFile(fileName) AssertEq(nil, err)