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

[PATCH v2 13/14] scalar: address -Wsign-compare warnings

From
Patrick Steinhardt <ps@pks.im>
Date
Dec 2, 2024, 12:04 UTC
Message-ID
<20241202-pks-sign-compare-v2-13-e7f0ad92a749@pks.im>
In-Reply-To
<20241202-pks-sign-compare-v2-0-e7f0ad92a749@pks.im>

There are two -Wsign-compare warnings in "scalar.c", both of which are trivial:

  - We mistakenly use a signed integer to loop towards an upper unsigned
    bound in `cmd_reconfigure()`.
  - We subtract `path_sep - enlistment->buf`, which results in a signed
    integer, and use the value in a ternary expression where second
    value is unsigned. But as `path_sep` is being assigned the result of
    `find_last_dir_sep(enlistment->buf + offset)` we know that it must
    always be bigger than or equal to `enlistment->buf`, and thus the
    result will be positive.
Address both of these warnings.
Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 scalar.c | 7 +++----
 1 file changed, 3 insertions(+), 4 deletions(-)
diff --git a/scalar.c b/scalar.c
index 87bb30991bf768534a988608d9b194dc8b5ba78a..f24bcd0169cee4f5055304a42954f7bf5df67e48 100644
--- a/scalar.c
+++ b/scalar.c
@@ -3,7 +3,6 @@
  */
 
 #define USE_THE_REPOSITORY_VARIABLE
-#define DISABLE_SIGN_COMPARE_WARNINGS
 
 #include "git-compat-util.h"
 #include "abspath.h"
@@ -380,7 +379,7 @@ static int delete_enlistment(struct strbuf *enlistment)
 	offset = offset_1st_component(enlistment->buf);
 	path_sep = find_last_dir_sep(enlistment->buf + offset);
 	strbuf_add(&parent, enlistment->buf,
-		   path_sep ? path_sep - enlistment->buf : offset);
+		   path_sep ? (size_t) (path_sep - enlistment->buf) : offset);
 	if (chdir(parent.buf) < 0) {
 		int res = error_errno(_("could not switch to '%s'"), parent.buf);
 		strbuf_release(&parent);
@@ -655,7 +654,7 @@ static int cmd_reconfigure(int argc, const char **argv)
 		NULL
 	};
 	struct string_list scalar_repos = STRING_LIST_INIT_DUP;
-	int i, res = 0;
+	int res = 0;
 	struct strbuf commondir = STRBUF_INIT, gitdir = STRBUF_INIT;
 
 	argc = parse_options(argc, argv, NULL, options,
@@ -673,7 +672,7 @@ static int cmd_reconfigure(int argc, const char **argv)
 
 	git_config(get_scalar_repos, &scalar_repos);
 
-	for (i = 0; i < scalar_repos.nr; i++) {
+	for (size_t i = 0; i < scalar_repos.nr; i++) {
 		int succeeded = 0;
 		struct repository *old_repo, r = { NULL };
 		const char *dir = scalar_repos.items[i].string;
-- 
2.47.0.366.g5daf58cba8.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 16 of 21 in “Start compiling with `-Wsign-compare`”
  1. 00/14 Start compiling with `-Wsign-compare`Patrick Steinhardt, Dec 2, 2024
  2. 02/14 compat/regex: explicitly ignore "-Wsign-compare" warningsPatrick Steinhardt, Dec 2, 2024
  3. 03/14 compat/win32: fix -Wsign-compare warning in "wWinMain()"Patrick Steinhardt, Dec 2, 2024
  4. 01/14 git-compat-util: introduce macros to disable "-Wsign-compare" warningsPatrick Steinhardt, Dec 2, 2024
  5. 05/14 config.mak.dev: drop `-Wno-sign-compare`Patrick Steinhardt, Dec 2, 2024
  6. 04/14 global: mark code units that generate warnings with `-Wsign-compare`Patrick Steinhardt, Dec 2, 2024
  7. 06/14 diff.h: fix index used to loop through unsigned integerPatrick Steinhardt, Dec 2, 2024
  8. 08/14 daemon: fix loops that have mismatching integer typesPatrick Steinhardt, Dec 2, 2024
  9. 09/14 daemon: fix type of `max_connections`Patrick Steinhardt, Dec 2, 2024
  10. 07/14 global: trivial conversions to fix `-Wsign-compare` warningsPatrick Steinhardt, Dec 2, 2024
  11. Junio C HamanoDec 4, 2024
  12. 11/14 builtin/blame: fix type of `length` variable when emitting object IDPatrick Steinhardt, Dec 2, 2024
  13. 12/14 builtin/patch-id: fix type of `get_one_patchid()`Patrick Steinhardt, Dec 2, 2024
  14. shejialuoDec 2, 2024
  15. Patrick SteinhardtDec 2, 2024
  16. 13/14 scalar: address -Wsign-compare warningsPatrick Steinhardt, Dec 2, 2024
  17. 14/14 t/helper: don't depend on implicit wraparoundPatrick Steinhardt, Dec 2, 2024
  18. 10/14 gpg-interface: address -Wsign-comparison warningsPatrick Steinhardt, Dec 2, 2024
  19. shejialuoDec 2, 2024
  20. sign-compare: 32-bit supportJunio C Hamano, Dec 4, 2024
  21. Patrick SteinhardtDec 5, 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.