test-fileio: avoid warning about ineffective comparison
authorZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 20 Mar 2019 12:43:35 +0000 (13:43 +0100)
committerZbigniew Jędrzejewski-Szmek <zbyszek@in.waw.pl>
Wed, 20 Mar 2019 13:00:12 +0000 (14:00 +0100)
On arm64 with gcc-8.2.1-5.fc29.aarch64:
../src/test/test-fileio.c:645:29: warning: comparison is always false due to limited range of data type [-Wtype-limits]
                 assert_se(c == EOF || safe_fgetc(f, &c) == 1);
                             ^~

Casting c to int is not enough, gcc is able to figure out that the original
type was unsigned and still warns. So let's just silence the warning like
in test-sizeof.c.

src/test/test-fileio.c

index 2ddaabe..3dd4287 100644 (file)
@@ -629,6 +629,10 @@ static void test_tempfn(void) {
 static const char chars[] =
         "Aąę„”\n루\377";
 
+
+#pragma GCC diagnostic push
+#pragma GCC diagnostic ignored "-Wtype-limits"
+
 static void test_fgetc(void) {
         _cleanup_fclose_ FILE *f = NULL;
         char c;
@@ -640,7 +644,7 @@ static void test_fgetc(void) {
                 assert_se(safe_fgetc(f, &c) == 1);
                 assert_se(c == chars[i]);
 
-                /* EOF is -1, and hence we can't push value 255 in this way */
+                /* EOF is -1, and hence we can't push value 255 in this way if char is signed */
                 assert_se(ungetc(c, f) != EOF || c == EOF);
                 assert_se(c == EOF || safe_fgetc(f, &c) == 1);
                 assert_se(c == chars[i]);
@@ -654,6 +658,8 @@ static void test_fgetc(void) {
         assert_se(safe_fgetc(f, &c) == 0);
 }
 
+#pragma GCC diagnostic pop
+
 static const char buffer[] =
         "Some test data\n"
         "루Non-ascii chars: ąę„”\n"