diff options
-rw-r--r-- | cpukit/libfs/src/dosfs/fat_file.c | 5 |
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) |