avformat: Read errno before av_log() as the callback from av_log() might affect errno
authorMichael Niedermayer <michaelni@gmx.at>
Sat, 25 Oct 2014 11:48:56 +0000 (13:48 +0200)
committerMichael Niedermayer <michaelni@gmx.at>
Sat, 25 Oct 2014 11:48:56 +0000 (13:48 +0200)
Signed-off-by: Michael Niedermayer <michaelni@gmx.at>
libavformat/libsmbclient.c
libavformat/smoothstreamingenc.c

index 892d2db..8290d75 100644 (file)
@@ -50,12 +50,14 @@ static av_cold int libsmbc_connect(URLContext *h)
 
     libsmbc->ctx = smbc_new_context();
     if (!libsmbc->ctx) {
+        int ret = AVERROR(errno);
         av_log(h, AV_LOG_ERROR, "Cannot create context: %s.\n", strerror(errno));
-        return AVERROR(errno);
+        return ret;
     }
     if (!smbc_init_context(libsmbc->ctx)) {
+        int ret = AVERROR(errno);
         av_log(h, AV_LOG_ERROR, "Cannot initialize context: %s.\n", strerror(errno));
-        return AVERROR(errno);
+        return ret;
     }
     smbc_set_context(libsmbc->ctx);
 
@@ -68,8 +70,9 @@ static av_cold int libsmbc_connect(URLContext *h)
         smbc_setWorkgroup(libsmbc->ctx, libsmbc->workgroup);
 
     if (smbc_init(NULL, 0) < 0) {
+        int ret = AVERROR(errno);
         av_log(h, AV_LOG_ERROR, "Initialization failed: %s\n", strerror(errno));
-        return AVERROR(errno);
+        return ret;
     }
     return 0;
 }
@@ -157,8 +160,9 @@ static int libsmbc_read(URLContext *h, unsigned char *buf, int size)
     int bytes_read;
 
     if ((bytes_read = smbc_read(libsmbc->fd, buf, size)) < 0) {
+        int ret = AVERROR(errno);
         av_log(h, AV_LOG_ERROR, "Read error: %s\n", strerror(errno));
-        return AVERROR(errno);
+        return ret;
     }
 
     return bytes_read;
@@ -170,8 +174,9 @@ static int libsmbc_write(URLContext *h, const unsigned char *buf, int size)
     int bytes_written;
 
     if ((bytes_written = smbc_write(libsmbc->fd, buf, size)) < 0) {
+        int ret = AVERROR(errno);
         av_log(h, AV_LOG_ERROR, "Write error: %s\n", strerror(errno));
-        return AVERROR(errno);
+        return ret;
     }
 
     return bytes_written;
index 51a8f6f..d6cdf90 100644 (file)
@@ -293,8 +293,8 @@ static int ism_write_header(AVFormatContext *s)
     AVOutputFormat *oformat;
 
     if (mkdir(s->filename, 0777) == -1 && errno != EEXIST) {
-        av_log(s, AV_LOG_ERROR, "mkdir failed\n");
         ret = AVERROR(errno);
+        av_log(s, AV_LOG_ERROR, "mkdir failed\n");
         goto fail;
     }