diff --git a/src/util/readwritefile.cpp b/src/util/readwritefile.cpp --- a/src/util/readwritefile.cpp +++ b/src/util/readwritefile.cpp @@ -19,8 +19,8 @@ } std::string retval; char buffer[128]; - size_t n; - while ((n = fread(buffer, 1, sizeof(buffer), f)) > 0) { + do { + const size_t n = fread(buffer, 1, sizeof(buffer), f); // Check for reading errors so we don't return any data if we couldn't // read the entire file (or up to maxsize) if (ferror(f)) { @@ -28,10 +28,7 @@ return std::make_pair(false, ""); } retval.append(buffer, buffer + n); - if (retval.size() > maxsize) { - break; - } - } + } while (!feof(f) && retval.size() <= maxsize); fclose(f); return std::make_pair(true, retval); } @@ -45,6 +42,5 @@ fclose(f); return false; } - fclose(f); - return true; + return fclose(f) == 0; }