[FFmpeg-cvslog] cmdutils: Read errno before av_log() as the callback from av_log() might affect errno
Michael Niedermayer
git at videolan.org
Sat Oct 25 13:40:04 CEST 2014
ffmpeg | branch: master | Michael Niedermayer <michaelni at gmx.at> | Sat Oct 25 13:17:26 2014 +0200| [2fc970a6b84504f54883a25482de466b49b11fd8] | committer: Michael Niedermayer
cmdutils: Read errno before av_log() as the callback from av_log() might affect errno
Signed-off-by: Michael Niedermayer <michaelni at gmx.at>
> http://git.videolan.org/gitweb.cgi/ffmpeg.git/?a=commit;h=2fc970a6b84504f54883a25482de466b49b11fd8
---
cmdutils.c | 11 +++++++----
1 file changed, 7 insertions(+), 4 deletions(-)
diff --git a/cmdutils.c b/cmdutils.c
index 7353dd5..46bfcca 100644
--- a/cmdutils.c
+++ b/cmdutils.c
@@ -959,9 +959,10 @@ static int init_report(const char *env)
report_file = fopen(filename.str, "w");
if (!report_file) {
+ int ret = AVERROR(errno);
av_log(NULL, AV_LOG_ERROR, "Failed to open report \"%s\": %s\n",
filename.str, strerror(errno));
- return AVERROR(errno);
+ return ret;
}
av_log_set_callback(log_callback_report);
av_log(NULL, AV_LOG_INFO,
@@ -1863,17 +1864,19 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
FILE *f = av_fopen_utf8(filename, "rb");
if (!f) {
+ ret = AVERROR(errno);
av_log(NULL, AV_LOG_ERROR, "Cannot read file '%s': %s\n", filename,
strerror(errno));
- return AVERROR(errno);
+ return ret;
}
fseek(f, 0, SEEK_END);
*size = ftell(f);
fseek(f, 0, SEEK_SET);
if (*size == (size_t)-1) {
+ ret = AVERROR(errno);
av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", strerror(errno));
fclose(f);
- return AVERROR(errno);
+ return ret;
}
*bufptr = av_malloc(*size + 1);
if (!*bufptr) {
@@ -1885,9 +1888,9 @@ int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
if (ret < *size) {
av_free(*bufptr);
if (ferror(f)) {
+ ret = AVERROR(errno);
av_log(NULL, AV_LOG_ERROR, "Error while reading file '%s': %s\n",
filename, strerror(errno));
- ret = AVERROR(errno);
} else
ret = AVERROR_EOF;
} else {
More information about the ffmpeg-cvslog
mailing list