summaryrefslogtreecommitdiffstats
path: root/src/filesys/file.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/filesys/file.c')
-rw-r--r--src/filesys/file.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/filesys/file.c b/src/filesys/file.c
index d5fc10d..238806a 100644
--- a/src/filesys/file.c
+++ b/src/filesys/file.c
@@ -155,7 +155,12 @@ file_seek (struct file *file, off_t new_pos)
{
ASSERT (file != NULL);
ASSERT (new_pos >= 0);
- file->pos = new_pos;
+ off_t size = inode_length (file->inode);
+ if (new_pos < size) {
+ file->pos = new_pos;
+ } else {
+ file->pos = size;
+ }
}
/* Returns the current position in FILE as a byte offset from the