From 6982ed7826d8717d46ceed40bc8db556cd669ed8 Mon Sep 17 00:00:00 2001 From: Thomas Doerfler Date: Fri, 12 Mar 2010 08:31:31 +0000 Subject: Do not overwrite errno in case fat_file_write() returns with an error status. --- cpukit/ChangeLog | 5 +++++ cpukit/libfs/src/dosfs/msdos_misc.c | 8 ++++++-- 2 files changed, 11 insertions(+), 2 deletions(-) diff --git a/cpukit/ChangeLog b/cpukit/ChangeLog index 65b644acd6..4d1d8187e0 100644 --- a/cpukit/ChangeLog +++ b/cpukit/ChangeLog @@ -1,3 +1,8 @@ +2010-03-11 Sebastian Huber + + * libfs/src/dosfs/msdos_misc.c: Do not overwrite errno in case + fat_file_write() returns with an error status. + 2010-03-11 Ken Peters PR 1456/cpukit diff --git a/cpukit/libfs/src/dosfs/msdos_misc.c b/cpukit/libfs/src/dosfs/msdos_misc.c index 4ab8e22b32..67573b8505 100644 --- a/cpukit/libfs/src/dosfs/msdos_misc.c +++ b/cpukit/libfs/src/dosfs/msdos_misc.c @@ -1447,7 +1447,9 @@ int msdos_find_name_in_fat_file( #if MSDOS_FIND_PRINT printf ("MSFS:[9.4] clear write: %d\n", ret); #endif - if (ret != bts2rd) + if (ret == -1) + return ret; + else if (ret != bts2rd) rtems_set_errno_and_return_minus_one(EIO); } } @@ -1556,7 +1558,9 @@ int msdos_find_name_in_fat_file( ret = fat_file_write(mt_entry, fat_fd, (empty_space_offset * bts2rd) + empty_space_entry, length, fs_info->cl_buf + empty_space_entry); - if (ret != length) + if (ret == -1) + return ret; + else if (ret != length) rtems_set_errno_and_return_minus_one(EIO); empty_space_offset++; -- cgit v1.2.3