diff options
author | relan <relan@users.noreply.github.com> | 2013-08-06 18:56:09 +0000 |
---|---|---|
committer | relan <relan@users.noreply.github.com> | 2015-08-24 08:26:16 +0300 |
commit | fdf590e92b8eb618f34fa1a2c1235b52777b3dcc (patch) | |
tree | 68c2c24dc322b1d2ad49e377d535d8ea5315e3e6 /libexfat/io.c | |
parent | 1a11935a441648480daecbb1b8f3eb228f1bffe1 (diff) | |
download | android_external_exfat-fdf590e92b8eb618f34fa1a2c1235b52777b3dcc.tar.gz android_external_exfat-fdf590e92b8eb618f34fa1a2c1235b52777b3dcc.tar.bz2 android_external_exfat-fdf590e92b8eb618f34fa1a2c1235b52777b3dcc.zip |
Handle I/O errors.
Diffstat (limited to 'libexfat/io.c')
-rw-r--r-- | libexfat/io.c | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/libexfat/io.c b/libexfat/io.c index 71e1dbc..c9fde95 100644 --- a/libexfat/io.c +++ b/libexfat/io.c @@ -331,7 +331,12 @@ ssize_t exfat_generic_pread(const struct exfat* ef, struct exfat_node* node, return -1; } lsize = MIN(CLUSTER_SIZE(*ef->sb) - loffset, remainder); - exfat_pread(ef->dev, bufp, lsize, exfat_c2o(ef, cluster) + loffset); + if (exfat_pread(ef->dev, bufp, lsize, + exfat_c2o(ef, cluster) + loffset) < 0) + { + exfat_error("failed to read cluster %#x", cluster); + return -1; + } bufp += lsize; loffset = 0; remainder -= lsize; @@ -375,7 +380,12 @@ ssize_t exfat_generic_pwrite(struct exfat* ef, struct exfat_node* node, return -1; } lsize = MIN(CLUSTER_SIZE(*ef->sb) - loffset, remainder); - exfat_pwrite(ef->dev, bufp, lsize, exfat_c2o(ef, cluster) + loffset); + if (exfat_pwrite(ef->dev, bufp, lsize, + exfat_c2o(ef, cluster) + loffset) < 0) + { + exfat_error("failed to write cluster %#x", cluster); + return -1; + } bufp += lsize; loffset = 0; remainder -= lsize; |