From: Phillip Wood <phillip.wood123@gmail.com>
To: "Sören Krecker" <soekkle@freenet.de>, git@vger.kernel.org
Cc: "Torsten Bögershausen" <tboegi@web.de>
Subject: Re: [PATCH] mimgw: remove Compiler Warnings
Date: Wed, 9 Oct 2024 17:13:33 +0100 [thread overview]
Message-ID: <4530b7cc-3f91-4009-977e-97519a5a9f85@gmail.com> (raw)
In-Reply-To: <20241009103541.2887-1-soekkle@freenet.de>
Hi Sören
On 09/10/2024 11:35, Sören Krecker wrote:
> Remove some complier warnings from msvc in compat/mingw.c for value truncation from 64 bit to 32 bit intigers.
Thanks for working on this, it is a useful improvement. It would be
helpful to explain the choice of signed/unsigned type in each case to
help reviewers check that the conversion is correct. I've looked through
the code and there are a couple I'm not sure about. I'd also echo
Torsten's code formatting comments.
> Signed-off-by: Sören Krecker <soekkle@freenet.de>
> ---
> compat/compiler.h | 4 ++--
> compat/mingw.c | 26 ++++++++++++++++----------
> compat/vcbuild/include/unistd.h | 7 +++++++
> 3 files changed, 25 insertions(+), 12 deletions(-)
>
> diff --git a/compat/compiler.h b/compat/compiler.h
> index e9ad9db84f..e12e426404 100644
> --- a/compat/compiler.h
> +++ b/compat/compiler.h
> @@ -9,7 +9,7 @@
>
> static inline void get_compiler_info(struct strbuf *info)
> {
> - int len = info->len;
> + size_t len = info->len;
> #ifdef __clang__
> strbuf_addf(info, "clang: %s\n", __clang_version__);
> #elif defined(__GNUC__)
> @@ -27,7 +27,7 @@ static inline void get_compiler_info(struct strbuf *info)
>
> static inline void get_libc_info(struct strbuf *info)
> {
> - int len = info->len;
> + size_t len = info->len;
>
> #ifdef __GLIBC__
> strbuf_addf(info, "glibc: %s\n", gnu_get_libc_version());
These two look straight forward - we save info->len at the start of the
function and see if it has changed at the end.
> diff --git a/compat/mingw.c b/compat/mingw.c
> index 0e851ecae2..dca0816267 100644
> --- a/compat/mingw.c
> +++ b/compat/mingw.c
> @@ -782,7 +782,7 @@ static inline void filetime_to_timespec(const FILETIME *ft, struct timespec *ts)
> */
> static int has_valid_directory_prefix(wchar_t *wfilename)
> {
> - int n = wcslen(wfilename);
> + ssize_t n = wcslen(wfilename);
This is ssize_t because n maybe negative as seen in the context below - good
>
> while (n > 0) {
> wchar_t c = wfilename[--n];
> @@ -891,7 +891,7 @@ static int do_lstat(int follow, const char *file_name, struct stat *buf)
> */
> static int do_stat_internal(int follow, const char *file_name, struct stat *buf)
> {
> - int namelen;
> + ssize_t namelen;
Looking at this function I can't see why this is ssize_t rather than size_t
> @@ -1274,7 +1274,8 @@ static const char *parse_interpreter(const char *cmd)
> {
> static char buf[100];
> char *p, *opt;
> - int n, fd;
> + ssize_t n;
This is ssize_t because we assign the return value of read() to n which
maybe negative - good
> @@ -1339,7 +1340,7 @@ static char *path_lookup(const char *cmd, int exe_only)
> {
> const char *path;
> char *prog = NULL;
> - int len = strlen(cmd);
> + size_t len = strlen(cmd);
This looks good we're holding the length of a string
> int isexe = len >= 4 && !strcasecmp(cmd+len-4, ".exe");
>
> if (strpbrk(cmd, "/\\"))
> @@ -1956,7 +1957,7 @@ char *mingw_getenv(const char *name)
> #define GETENV_MAX_RETAIN 64
> static char *values[GETENV_MAX_RETAIN];
> static int value_counter;
> - int len_key, len_value;
> + size_t len_key, len_value;
This looks good too, they're holding the length of a string
> @@ -2001,7 +2005,7 @@ char *mingw_getenv(const char *name)
>
> int mingw_putenv(const char *namevalue)
> {
> - int size;
> + size_t size;
This looks correct - another string length
> @@ -3085,7 +3090,8 @@ static void maybe_redirect_std_handles(void)
> */
> int wmain(int argc, const wchar_t **wargv)
> {
> - int i, maxlen, exit_status;
> + int exit_status;
> + size_t i, maxlen;
"i" loops over 0..argc so I think we want to keep it as an int. maxlen
is a string length so should be size_t.
Best Wishes
Phillip
> char *buffer, **save;
> const char **argv;
>
> diff --git a/compat/vcbuild/include/unistd.h b/compat/vcbuild/include/unistd.h
> index 3a959d124c..ab3dc06709 100644
> --- a/compat/vcbuild/include/unistd.h
> +++ b/compat/vcbuild/include/unistd.h
> @@ -13,8 +13,15 @@ typedef _mode_t mode_t;
> #endif /* Not _MODE_T_ */
>
> #ifndef _SSIZE_T_
> +#ifdef _WIN64
> #define _SSIZE_T_
> +typedef __int64 _ssize_t;
> +#pragma message("Compiling on Win64")
> +#else
> typedef long _ssize_t;
> +#endif // _AMD64
> +
> +
>
> #ifndef _OFF_T_
> #define _OFF_T_
>
> base-commit: 777489f9e09c8d0dd6b12f9d90de6376330577a2
next prev parent reply other threads:[~2024-10-09 16:13 UTC|newest]
Thread overview: 16+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-09 10:35 [PATCH] mimgw: remove Compiler Warnings Sören Krecker
2024-10-09 15:26 ` Torsten Bögershausen
2024-10-09 16:13 ` Phillip Wood [this message]
2024-10-09 17:13 ` Sören Krecker
2024-10-09 17:13 ` [PATCH v2 1/1] " Sören Krecker
2024-10-09 18:20 ` Junio C Hamano
2024-10-10 8:59 ` Phillip Wood
2024-10-10 10:29 ` [PATCH] [PATCH] mimgw: Remove " Sören Krecker
2024-10-10 19:19 ` Torsten Bögershausen
2024-10-12 6:22 ` [PATCH v4] mingw.c: Fix complier warnings for a 64 bit msvc Sören Krecker
2024-10-16 16:51 ` Torsten Bögershausen
2024-10-16 20:22 ` Taylor Blau
2024-10-17 17:18 ` [PATCH v5 0/1] " Sören Krecker
2024-10-17 17:18 ` [PATCH 1/1] [PATCH] " Sören Krecker
2024-10-17 18:43 ` Taylor Blau
2024-10-10 16:08 ` [PATCH v2 1/1] [PATCH] mimgw: remove Compiler Warnings Junio C Hamano
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=4530b7cc-3f91-4009-977e-97519a5a9f85@gmail.com \
--to=phillip.wood123@gmail.com \
--cc=git@vger.kernel.org \
--cc=phillip.wood@dunelm.org.uk \
--cc=soekkle@freenet.de \
--cc=tboegi@web.de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).