git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v4 06/16] diff.h: fix index used to loop through unsigned integer

From
Patrick Steinhardt <ps@pks.im>
Date
Dec 6, 2024, 10:27 UTC
Message-ID
<20241206-pks-sign-compare-v4-6-0344c6dfb219@pks.im>
In-Reply-To
<20241206-pks-sign-compare-v4-0-0344c6dfb219@pks.im>

The `struct diff_flags` structure is essentially an array of flags, all of which have the same type. We can thus use `sizeof()` to iterate through all of the flags, which we do in `diff_flags_or()`. But while the statement returns an unsigned integer, we used a signed integer to iterate through the flags, which generates a warning.

Fix this by using `size_t` for the index instead.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 builtin/am.c                     | 1 -
 builtin/diff-tree.c              | 1 -
 builtin/merge-ours.c             | 1 -
 builtin/pack-refs.c              | 1 -
 builtin/range-diff.c             | 1 -
 builtin/reflog.c                 | 1 -
 builtin/reset.c                  | 1 -
 builtin/revert.c                 | 1 -
 builtin/shortlog.c               | 1 -
 diff-merges.c                    | 2 --
 diff.h                           | 3 +--
 diffcore-order.c                 | 2 --
 diffcore-rotate.c                | 2 --
 list-objects-filter.c            | 1 -
 patch-ids.c                      | 2 --
 reachable.c                      | 1 -
 reflog-walk.c                    | 1 -
 t/helper/test-revision-walking.c | 1 -
 18 files changed, 1 insertion(+), 23 deletions(-)
diff --git a/builtin/am.c b/builtin/am.c
index f3b6546b3049a90fe32801087151e992623e7f17..1338b606febdde6700c573b45f89aa70785f54e8 100644
--- a/builtin/am.c
+++ b/builtin/am.c
@@ -5,7 +5,6 @@
  */
 
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "abspath.h"
diff --git a/builtin/diff-tree.c b/builtin/diff-tree.c
index a4df2d0c130392f74b4da38dc5d0cd493d88f0e4..40804e7b48e319f6618cd22ac3695ce510b5f51a 100644
--- a/builtin/diff-tree.c
+++ b/builtin/diff-tree.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "config.h"
diff --git a/builtin/merge-ours.c b/builtin/merge-ours.c
index 3672c6353f3219c48a2f10f9011cdd48d702265f..3ecd9172f18466823ad867ca28958c12a3266b85 100644
--- a/builtin/merge-ours.c
+++ b/builtin/merge-ours.c
@@ -9,7 +9,6 @@
  */
 
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
 #include "builtin.h"
diff --git a/builtin/pack-refs.c b/builtin/pack-refs.c
index 71175a713a07a1e89050a869c92bd472bea15f87..4fdd68880e0c6d30ca77df1e5f0f2e3f5117097e 100644
--- a/builtin/pack-refs.c
+++ b/builtin/pack-refs.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "config.h"
diff --git a/builtin/range-diff.c b/builtin/range-diff.c
index aa88a46d9ee3fcc61817834c770b3de352d78e7a..433c305fc5fc3a5f9ba3515430311338f3bf13c3 100644
--- a/builtin/range-diff.c
+++ b/builtin/range-diff.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "gettext.h"
diff --git a/builtin/reflog.c b/builtin/reflog.c
index 08e99a22b04db7251c285ff56d70d5292ddd2723..95f264989bbf1a955b3be528b84ce1fe525e8459 100644
--- a/builtin/reflog.c
+++ b/builtin/reflog.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "config.h"
diff --git a/builtin/reset.c b/builtin/reset.c
index f34d22190f489fb522fb70584ae2d777a895afbf..73b4537a9a567d1a7661fed89ed362d0f0c81c0d 100644
--- a/builtin/reset.c
+++ b/builtin/reset.c
@@ -9,7 +9,6 @@
  */
 
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "advice.h"
diff --git a/builtin/revert.c b/builtin/revert.c
index 4b57c2c38378e02342e678cb8936b80637b98c5e..aca6c293cdfb2f1ca119f6336b56e36eb3f9dfbf 100644
--- a/builtin/revert.c
+++ b/builtin/revert.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
 #include "builtin.h"
diff --git a/builtin/shortlog.c b/builtin/shortlog.c
index 1c46f13a16346c9a3ba41a92e0aec0428179b939..30075b67be8dac2db7aba793a818f357c7c11cc1 100644
--- a/builtin/shortlog.c
+++ b/builtin/shortlog.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "builtin.h"
 #include "config.h"
diff --git a/diff-merges.c b/diff-merges.c
index 0adfe7f5c06b586500361f47ed0d05124c8c9f70..45507588a2797b8d3618e3a19a2854d12051157b 100644
--- a/diff-merges.c
+++ b/diff-merges.c
@@ -1,5 +1,3 @@
-#define DISABLE_SIGN_COMPARE_WARNINGS
-
 #include "git-compat-util.h"
 #include "diff-merges.h"
 
diff --git a/diff.h b/diff.h
index 5c8de795353f0a7201e1a5aa7b6c241dd2bb17ad..6e6007c17b01ada6eab3cb54e94b34b781335348 100644
--- a/diff.h
+++ b/diff.h
@@ -205,9 +205,8 @@ static inline void diff_flags_or(struct diff_flags *a,
 {
 	char *tmp_a = (char *)a;
 	const char *tmp_b = (const char *)b;
-	int i;
 
-	for (i = 0; i < sizeof(struct diff_flags); i++)
+	for (size_t i = 0; i < sizeof(struct diff_flags); i++)
 		tmp_a[i] |= tmp_b[i];
 }
 
diff --git a/diffcore-order.c b/diffcore-order.c
index ec59d3d9bcc85753352f5faba7982da1c4455b95..f91ef2247145a6157196fb6ebb063bc98d2c3e87 100644
--- a/diffcore-order.c
+++ b/diffcore-order.c
@@ -2,8 +2,6 @@
  * Copyright (C) 2005 Junio C Hamano
  */
 
-#define DISABLE_SIGN_COMPARE_WARNINGS
-
 #include "git-compat-util.h"
 #include "gettext.h"
 #include "diff.h"
diff --git a/diffcore-rotate.c b/diffcore-rotate.c
index 941a022d5e6e79592967166f1ffc7fcd62086010..67b591261adcc66ef8ab51df9677851564597d17 100644
--- a/diffcore-rotate.c
+++ b/diffcore-rotate.c
@@ -3,8 +3,6 @@
  * Based on diffcore-order.c, which is Copyright (C) 2005, Junio C Hamano
  */
 
-#define DISABLE_SIGN_COMPARE_WARNINGS
-
 #include "git-compat-util.h"
 #include "gettext.h"
 #include "diff.h"
diff --git a/list-objects-filter.c b/list-objects-filter.c
index 4afa3029dca926baff81fba4a553b31dfed551a1..dc598a081bb25283a1f0d287baf3805da2955106 100644
--- a/list-objects-filter.c
+++ b/list-objects-filter.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
 #include "dir.h"
diff --git a/patch-ids.c b/patch-ids.c
index 8b891980732fd33f89bb8b1ef1bf9ad6717120ec..a5683b462c6e7692ceff3218213b9747a9b6cc02 100644
--- a/patch-ids.c
+++ b/patch-ids.c
@@ -1,5 +1,3 @@
-#define DISABLE_SIGN_COMPARE_WARNINGS
-
 #include "git-compat-util.h"
 #include "diff.h"
 #include "commit.h"
diff --git a/reachable.c b/reachable.c
index 34079e1ae9b20313c86c7962f518aa266b7153ea..3e9b3dd0a46cb410b8f032784115c78084c5dbd9 100644
--- a/reachable.c
+++ b/reachable.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
 #include "gettext.h"
diff --git a/reflog-walk.c b/reflog-walk.c
index b53628ed5372235d840ce481d22a90cf10ad5c8a..c7070b13b004b7c207a3f99740999f582c15c1b0 100644
--- a/reflog-walk.c
+++ b/reflog-walk.c
@@ -1,5 +1,4 @@
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
 #include "commit.h"
diff --git a/t/helper/test-revision-walking.c b/t/helper/test-revision-walking.c
index 3b931a34a2a2198287fb7f0175ac11e6f2ba0059..071f5bd1e21974ba2104a76305a5156ee2c2961f 100644
--- a/t/helper/test-revision-walking.c
+++ b/t/helper/test-revision-walking.c
@@ -9,7 +9,6 @@
  */
 
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "test-tool.h"
 #include "commit.h"
-- 
2.47.0.366.g5daf58cba8.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 51 of 66 in “Start compiling with `-Wsign-compare`”
  1. 00/10 Start compiling with `-Wsign-compare`Patrick Steinhardt, Nov 29, 2024
  2. 02/10 compat/regex: explicitly ignore "-Wsign-compare" warningsPatrick Steinhardt, Nov 29, 2024
  3. 01/10 git-compat-util: introduce macros to disable "-Wsign-compare" warningsPatrick Steinhardt, Nov 29, 2024
  4. 03/10 compat/win32: fix -Wsign-compare warning in "wWinMain()"Patrick Steinhardt, Nov 29, 2024
  5. 05/10 config.mak.dev: drop `-Wno-sign-compare`Patrick Steinhardt, Nov 29, 2024
  6. 06/10 global: fix unsigned integer promotions in ternary statementsPatrick Steinhardt, Nov 29, 2024
  7. shejialuoNov 30, 2024
  8. Patrick SteinhardtDec 2, 2024
  9. Jeff KingDec 1, 2024
  10. Patrick SteinhardtDec 2, 2024
  11. 04/10 global: mark code units that generate warnings with `-Wsign-compare`Patrick Steinhardt, Nov 29, 2024
  12. 07/10 diff.h: fix index used to loop through unsigned integerPatrick Steinhardt, Nov 29, 2024
  13. 09/10 daemon: fix loops that have mismatching integer typesPatrick Steinhardt, Nov 29, 2024
  14. Jeff KingDec 1, 2024
  15. Patrick SteinhardtDec 2, 2024
  16. Jeff KingDec 5, 2024
  17. 08/10 global: trivial conversions to fix `-Wsign-compare` warningsPatrick Steinhardt, Nov 29, 2024
  18. Jeff KingDec 1, 2024
  19. Patrick SteinhardtDec 2, 2024
  20. 10/10 daemon: fix type of `max_connections`Patrick Steinhardt, Nov 29, 2024
  21. Jeff KingDec 1, 2024
  22. shejialuoNov 30, 2024
  23. Patrick SteinhardtDec 2, 2024
  24. Jeff KingDec 1, 2024
  25. Patrick SteinhardtDec 2, 2024
  26. 00/15 Start compiling with `-Wsign-compare`Patrick Steinhardt, Dec 5, 2024
  27. 01/15 git-compat-util: introduce macros to disable "-Wsign-compare" warningsPatrick Steinhardt, Dec 5, 2024
  28. 02/15 compat/regex: explicitly ignore "-Wsign-compare" warningsPatrick Steinhardt, Dec 5, 2024
  29. 03/15 compat/win32: fix -Wsign-compare warning in "wWinMain()"Patrick Steinhardt, Dec 5, 2024
  30. 05/15 config.mak.dev: drop `-Wno-sign-compare`Patrick Steinhardt, Dec 5, 2024
  31. 04/15 global: mark code units that generate warnings with `-Wsign-compare`Patrick Steinhardt, Dec 5, 2024
  32. 06/15 diff.h: fix index used to loop through unsigned integerPatrick Steinhardt, Dec 5, 2024
  33. 07/15 sign-compare: 32-bit supportPatrick Steinhardt, Dec 5, 2024
  34. Jeff KingDec 5, 2024
  35. Patrick SteinhardtDec 6, 2024
  36. 08/15 global: trivial conversions to fix `-Wsign-compare` warningsPatrick Steinhardt, Dec 5, 2024
  37. 09/15 daemon: fix loops that have mismatching integer typesPatrick Steinhardt, Dec 5, 2024
  38. 11/15 gpg-interface: address -Wsign-comparison warningsPatrick Steinhardt, Dec 5, 2024
  39. 10/15 daemon: fix type of `max_connections`Patrick Steinhardt, Dec 5, 2024
  40. 12/15 builtin/blame: fix type of `length` variable when emitting object IDPatrick Steinhardt, Dec 5, 2024
  41. 13/15 builtin/patch-id: fix type of `get_one_patchid()`Patrick Steinhardt, Dec 5, 2024
  42. 14/15 scalar: address -Wsign-compare warningsPatrick Steinhardt, Dec 5, 2024
  43. 15/15 t/helper: don't depend on implicit wraparoundPatrick Steinhardt, Dec 5, 2024
  44. 00/16 Start compiling with `-Wsign-compare`Patrick Steinhardt, Dec 6, 2024
  45. 01/16 git-compat-util: introduce macros to disable "-Wsign-compare" warningsPatrick Steinhardt, Dec 6, 2024
  46. karthik nayakDec 6, 2024
  47. 02/16 compat/regex: explicitly ignore "-Wsign-compare" warningsPatrick Steinhardt, Dec 6, 2024
  48. 03/16 compat/win32: fix -Wsign-compare warning in "wWinMain()"Patrick Steinhardt, Dec 6, 2024
  49. 05/16 config.mak.dev: drop `-Wno-sign-compare`Patrick Steinhardt, Dec 6, 2024
  50. 04/16 global: mark code units that generate warnings with `-Wsign-compare`Patrick Steinhardt, Dec 6, 2024
  51. 06/16 diff.h: fix index used to loop through unsigned integerPatrick Steinhardt, Dec 6, 2024
  52. 07/16 csum-file: fix -Wsign-compare warning on 32-bit platformPatrick Steinhardt, Dec 6, 2024
  53. 08/16 pkt-line: fix -Wsign-compare warning on 32 bit platformPatrick Steinhardt, Dec 6, 2024
  54. Jeff KingDec 8, 2024
  55. Junio C HamanoDec 9, 2024
  56. 09/16 global: trivial conversions to fix `-Wsign-compare` warningsPatrick Steinhardt, Dec 6, 2024
  57. 10/16 daemon: fix loops that have mismatching integer typesPatrick Steinhardt, Dec 6, 2024
  58. 11/16 daemon: fix type of `max_connections`Patrick Steinhardt, Dec 6, 2024
  59. 12/16 gpg-interface: address -Wsign-comparison warningsPatrick Steinhardt, Dec 6, 2024
  60. 13/16 builtin/blame: fix type of `length` variable when emitting object IDPatrick Steinhardt, Dec 6, 2024
  61. Johannes SchindelinJan 8, 2025
  62. Patrick SteinhardtJan 9, 2025
  63. 14/16 builtin/patch-id: fix type of `get_one_patchid()`Patrick Steinhardt, Dec 6, 2024
  64. 15/16 scalar: address -Wsign-compare warningsPatrick Steinhardt, Dec 6, 2024
  65. 16/16 t/helper: don't depend on implicit wraparoundPatrick Steinhardt, Dec 6, 2024
  66. karthik nayakDec 6, 2024

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.