[FFmpeg-cvslog] cmdutils: check fread() return value
Janne Grunau
git at videolan.org
Mon Oct 31 02:40:37 CET 2011
ffmpeg | branch: master | Janne Grunau <janne-libav at jannau.net> | Sun Oct 30 15:34:32 2011 +0100| [d94c577d3c61e428cfcbcd3dc3a80bd848077eae] | committer: Janne Grunau
cmdutils: check fread() return value
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=d94c577d3c61e428cfcbcd3dc3a80bd848077eae
---
cmdutils.c | 18 +++++++++++++++---
1 files changed, 15 insertions(+), 3 deletions(-)
diff --git a/cmdutils.c b/cmdutils.c
index ade3f10..c158de3 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -787,6 +787,7 @@ int read_yesno(void)
int read_file(const char *filename, char **bufptr, size_t *size)
{
+ int ret;
FILE *f = fopen(filename, "rb");
if (!f) {
@@ -802,11 +803,22 @@ int read_file(const char *filename, char **bufptr, size_t *size)
fclose(f);
return AVERROR(ENOMEM);
}
- fread(*bufptr, 1, *size, f);
- (*bufptr)[*size++] = '\0';
+ ret = fread(*bufptr, 1, *size, f);
+ if (ret < *size) {
+ av_free(*bufptr);
+ if (ferror(f)) {
+ av_log(NULL, AV_LOG_ERROR, "Error while reading file '%s': %s\n",
+ filename, strerror(errno));
+ ret = AVERROR(errno);
+ } else
+ ret = AVERROR_EOF;
+ } else {
+ ret = 0;
+ (*bufptr)[*size++] = '\0';
+ }
fclose(f);
- return 0;
+ return ret;
}
void init_pts_correction(PtsCorrectionContext *ctx)
More information about the ffmpeg-cvslog
mailing list