aboutsummaryrefslogtreecommitdiffstats
path: root/libexfat/io.c
diff options
context:
space:
mode:
authorrelan <relan@users.noreply.github.com>2013-08-06 18:56:09 +0000
committerrelan <relan@users.noreply.github.com>2015-08-24 08:26:16 +0300
commitfdf590e92b8eb618f34fa1a2c1235b52777b3dcc (patch)
tree68c2c24dc322b1d2ad49e377d535d8ea5315e3e6 /libexfat/io.c
parent1a11935a441648480daecbb1b8f3eb228f1bffe1 (diff)
downloadandroid_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.c14
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;