summaryrefslogtreecommitdiff
path: root/cmdutils.c
diff options
context:
space:
mode:
authorMichael Niedermayer <michaelni@gmx.at>2014-12-19 04:30:25 +0100
committerMichael Niedermayer <michaelni@gmx.at>2014-12-19 04:31:17 +0100
commit934f2d2f5c16df8aad9f401a9fd842b5d9a78b11 (patch)
tree63136014c46c98a9de8cb93c6916c7c9cfb7b5a3 /cmdutils.c
parentff4f2036defbadc60081ba252e093abda5897d6d (diff)
parent38129c26c51b933d7db423f904ba0cd6a88ca1ed (diff)
downloadffmpeg-934f2d2f5c16df8aad9f401a9fd842b5d9a78b11.tar.gz
Merge commit '38129c26c51b933d7db423f904ba0cd6a88ca1ed'
* commit '38129c26c51b933d7db423f904ba0cd6a88ca1ed': cmdutils: check file access functions return values Conflicts: cmdutils.c Merged-by: Michael Niedermayer <michaelni@gmx.at>
Diffstat (limited to 'cmdutils.c')
-rw-r--r--cmdutils.c31
1 files changed, 22 insertions, 9 deletions
diff --git a/cmdutils.c b/cmdutils.c
index 4e0a406fde..8b6edfc9c5 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -1864,20 +1864,31 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
strerror(errno));
return ret;
}
- fseek(f, 0, SEEK_END);
- *size = ftell(f);
- fseek(f, 0, SEEK_SET);
- if (*size == (size_t)-1) {
+
+ ret = fseek(f, 0, SEEK_END);
+ if (ret == -1) {
ret = AVERROR(errno);
- av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", strerror(errno));
- fclose(f);
- return ret;
+ goto out;
+ }
+
+ ret = ftell(f);
+ if (ret < 0) {
+ ret = AVERROR(errno);
+ goto out;
}
+ *size = ret;
+
+ ret = fseek(f, 0, SEEK_SET);
+ if (ret == -1) {
+ ret = AVERROR(errno);
+ goto out;
+ }
+
*bufptr = av_malloc(*size + 1);
if (!*bufptr) {
av_log(NULL, AV_LOG_ERROR, "Could not allocate file buffer\n");
- fclose(f);
- return AVERROR(ENOMEM);
+ ret = AVERROR(ENOMEM);
+ goto out;
}
ret = fread(*bufptr, 1, *size, f);
if (ret < *size) {
@@ -1893,6 +1904,8 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
(*bufptr)[(*size)++] = '\0';
}
+out:
+ av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", av_err2str(ret));
fclose(f);
return ret;
}