Commit Diff


commit - c27b25f652a3895a674b9bc7120cf4e3edf869f8
commit + d6dd8a695e7f85727271e135a4d37f8fa037ece7
blob - 07c82623f6b55e9bfcbb22aca2335c5a226d9104
blob + 9b46cfdd3efd7d1f36768ae3ce66edc8ce907f04
--- FICS/ratings.c
+++ FICS/ratings.c
@@ -358,14 +358,23 @@ load_ratings(void)
 		    &lHist[i]);
 		errno_save = errno;
 		if (ret != 4) {
-			if (feof(fp) || ferror(fp))
-				break;
 			errno = errno_save;
-			warn("%s: too few items assigned (iteration: %d)",
+			warnx("%s: too few items assigned (iteration: %d)",
 			    __func__, i);
+			fclose(fp);
+			return;
 		}
+
+		if (feof(fp) || ferror(fp))
+			break;
 	}
 
+	if (ferror(fp)) {
+		warnx("%s: %s: the error indicator is set", __func__, fname);
+		fclose(fp);
+		return;
+	}
+
 	fclose(fp);
 
 	if (Rs_count != 0) {