summaryrefslogtreecommitdiffstats
path: root/cpukit/libfs
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2013-02-18 08:36:55 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2013-02-20 09:11:40 +0100
commit78a50d924c8c0a540e0d3ab60579de516e560c95 (patch)
tree3956b872fb79501be9640a593934586f51d7c6d8 /cpukit/libfs
parentfstests/fsrdwr: Add test case (diff)
downloadrtems-78a50d924c8c0a540e0d3ab60579de516e560c95.tar.bz2
dosfs: Fix file length update
Diffstat (limited to 'cpukit/libfs')
-rw-r--r--cpukit/libfs/src/dosfs/fat_file.c5
1 files changed, 3 insertions, 2 deletions
diff --git a/cpukit/libfs/src/dosfs/fat_file.c b/cpukit/libfs/src/dosfs/fat_file.c
index b71745ff5b..4425b857dd 100644
--- a/cpukit/libfs/src/dosfs/fat_file.c
+++ b/cpukit/libfs/src/dosfs/fat_file.c
@@ -633,8 +633,9 @@ fat_file_extend(
/* check wether we satisfied request for 'cls2add' clusters */
if (cls2add != cls_added)
{
- new_length -= bytes2add & (fs_info->vol.bpc - 1);
- new_length -= (cls2add - cls_added) << fs_info->vol.bpc_log2;
+ uint32_t missing = (cls2add - cls_added) << fs_info->vol.bpc_log2;
+
+ new_length -= bytes2add < missing ? bytes2add : missing;
}
if (cls_added > 0)