Merge commit '38129c26c51b933d7db423f904ba0cd6a88ca1ed'
authorMichael Niedermayer <michaelni@gmx.at>
Fri, 19 Dec 2014 03:30:25 +0000 (04:30 +0100)
committerMichael Niedermayer <michaelni@gmx.at>
Fri, 19 Dec 2014 03:31:17 +0000 (04:31 +0100)
* commit '38129c26c51b933d7db423f904ba0cd6a88ca1ed':
  cmdutils: check file access functions return values

Conflicts:
cmdutils.c

Merged-by: Michael Niedermayer <michaelni@gmx.at>
1  2 
cmdutils.c

diff --cc cmdutils.c
@@@ -1856,23 -1390,33 +1856,34 @@@ int read_yesno(void
  int cmdutils_read_file(const char *filename, char **bufptr, size_t *size)
  {
      int ret;
 -    FILE *f = fopen(filename, "rb");
 +    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 = 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");
          (*bufptr)[(*size)++] = '\0';
      }
  
+ out:
++    av_log(NULL, AV_LOG_ERROR, "IO error: %s\n", av_err2str(ret));
      fclose(f);
      return ret;
  }