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

[PATCH v2 03/14] compat/win32: fix -Wsign-compare warning in "wWinMain()"

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

GCC generates a warning in "headless.c" because we compare `slash` with `size`, where the former is an `int` and the latter is a `size_t`. Fix the warning by storing `slash` as a `size_t`, as well.

This commit is being singled out because the file does not include the "git-compat-util.h" header, and consequently, we cannot easily mark it with the `DISABLE_SIGN_COMPARE_WARNING` macro.

Signed-off-by: Patrick Steinhardt <ps@pks.im>
---
 compat/win32/headless.c | 17 +++++++++--------
 1 file changed, 9 insertions(+), 8 deletions(-)
diff --git a/compat/win32/headless.c b/compat/win32/headless.c
index 11392a0b9a6dac5522bc5042064f492bd73cc871..a6eb116ddc7b586fea80f46ac36d50a4b3ddb656 100644
--- a/compat/win32/headless.c
+++ b/compat/win32/headless.c
@@ -53,7 +53,8 @@ int WINAPI wWinMain(_In_ HINSTANCE instance,
 	wchar_t git_command_line[32768];
 	size_t size = sizeof(git_command_line) / sizeof(wchar_t);
 	const wchar_t *needs_quotes = L"";
-	int slash = 0, i;
+	size_t slash = 0;
+	int len;
 
 	STARTUPINFO startup_info = {
 		.cb = sizeof(STARTUPINFO),
@@ -66,7 +67,7 @@ int WINAPI wWinMain(_In_ HINSTANCE instance,
 	DWORD exit_code;
 
 	/* First, determine the full path of argv[0] */
-	for (i = 0; _wpgmptr[i]; i++)
+	for (size_t i = 0; _wpgmptr[i]; i++)
 		if (_wpgmptr[i] == L' ')
 			needs_quotes = L"\"";
 		else if (_wpgmptr[i] == L'\\')
@@ -79,16 +80,16 @@ int WINAPI wWinMain(_In_ HINSTANCE instance,
 	extend_path(_wpgmptr, slash);
 
 	/* Then, add the full path of `git.exe` as argv[0] */
-	i = swprintf_s(git_command_line, size, L"%ls%.*ls\\git.exe%ls",
-		       needs_quotes, slash, _wpgmptr, needs_quotes);
-	if (i < 0)
+	len = swprintf_s(git_command_line, size, L"%ls%.*ls\\git.exe%ls",
+			 needs_quotes, (int) slash, _wpgmptr, needs_quotes);
+	if (len < 0)
 		return 127; /* Too long path */
 
 	if (*command_line) {
 		/* Now, append the command-line arguments */
-		i = swprintf_s(git_command_line + i, size - i,
-			       L" %ls", command_line);
-		if (i < 0)
+		len = swprintf_s(git_command_line + len, size - len,
+				 L" %ls", command_line);
+		if (len < 0)
 			return 127;
 	}
 
-- 
2.47.0.366.g5daf58cba8.dirty
Previous: Patrick SteinhardtNext: Patrick Steinhardt
Message 3 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.