shithub: libvpx

Download patch

ref: 86f786a256cae54db2750d6aae81658be38bb79d
parent: 7ae5954d35910524ede62f913f23c4980ad58498
parent: d5866987ff5c457ba732f2b52803000c213c26eb
author: James Zern <jzern@google.com>
date: Tue Mar 18 13:07:36 EDT 2014

Merge "y4minput: add more error reporting on read failure"

--- a/y4minput.c
+++ b/y4minput.c
@@ -22,13 +22,14 @@
 static int file_read(void *buf, size_t size, FILE *file) {
   const int kMaxRetries = 5;
   int retry_count = 0;
+  int file_error;
   size_t len = 0;
   do {
     const size_t n = fread((uint8_t*)buf + len, 1, size - len, file);
     len += n;
-    if (ferror(file)) {
+    file_error = ferror(file);
+    if (file_error) {
       if (errno == EINTR || errno == EAGAIN) {
-        ++retry_count;
         clearerr(file);
         continue;
       } else {
@@ -37,7 +38,14 @@
         return 0;
       }
     }
-  } while (!feof(file) && len < size && retry_count < kMaxRetries);
+  } while (!feof(file) && len < size && ++retry_count < kMaxRetries);
+
+  if (!feof(file) && len != size) {
+    fprintf(stderr, "Error reading file: %u of %u bytes read,"
+                    " error: %d, retries: %d, %d: %s\n",
+            (uint32_t)len, (uint32_t)size, file_error, retry_count,
+            errno, strerror(errno));
+  }
   return len == size;
 }