# [PATCH v3 2/4] date.c: Fix type conversation warnings from msvc

4 messages from 2025-01-26 to 2025-01-28. Participants: Sören Krecker, Patrick Steinhardt, Junio C Hamano.
Thread: https://gitlist.dev/t/62855

## Sören Krecker, 2025-01-26 12:58

Subject: [PATCH v3 2/4] date.c: Fix type conversation warnings from msvc
Message-ID: <20250126125850.3195-1-soekkle@freenet.de>
URL: https://gitlist.dev/e/20250126125850.3195-1-soekkle%40freenet.de

```
Fix compiler warnings from msvc in date.c for value truncation from 64
bit to 32 bit integers.

Also switch from int to size_t for all variables with result of strlen()
which cannot become negative.

Signed-off-by: Sören Krecker <soekkle@freenet.de>
---
 date.c | 8 ++++----
 1 file changed, 4 insertions(+), 4 deletions(-)

diff --git a/date.c b/date.c
index a1b26a8dce..0a3fafc8a4 100644
--- a/date.c
+++ b/date.c
@@ -1244,7 +1244,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
 	}
 
 	for (s = special; s->name; s++) {
-		int len = strlen(s->name);
+		size_t len = strlen(s->name);
 		if (match_string(date, s->name) == len) {
 			s->fn(tm, now, num);
 			*touched = 1;
@@ -1254,7 +1254,7 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
 
 	if (!*num) {
 		for (i = 1; i < 11; i++) {
-			int len = strlen(number_name[i]);
+			size_t len = strlen(number_name[i]);
 			if (match_string(date, number_name[i]) == len) {
 				*num = i;
 				*touched = 1;
@@ -1270,8 +1270,8 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
 
 	tl = typelen;
 	while (tl->type) {
-		int len = strlen(tl->type);
-		if (match_string(date, tl->type) >= len-1) {
+		size_t len = strlen(tl->type);
+		if (match_string(date, tl->type)+1 >= len) {
 			update_tm(tm, now, tl->length * *num);
 			*num = 0;
 			*touched = 1;
-- 
2.39.5


```

## Patrick Steinhardt, 2025-01-27 07:26

Subject: Re: [PATCH v3 2/4] date.c: Fix type conversation warnings from msvc
Message-ID: <Z5c1F7oqsaPrHRiT@pks.im>
URL: https://gitlist.dev/e/Z5c1F7oqsaPrHRiT%40pks.im
In-Reply-To: <20250126125850.3195-1-soekkle@freenet.de>

```
On Sun, Jan 26, 2025 at 01:58:50PM +0100, Sören Krecker wrote:
> Fix compiler warnings from msvc in date.c for value truncation from 64
> bit to 32 bit integers.
> 
> Also switch from int to size_t for all variables with result of strlen()
> which cannot become negative.

As far as I can see this patch only does the latter and doesn't do the
former, so the commit message seems inaccurate to me.

> diff --git a/date.c b/date.c
> index a1b26a8dce..0a3fafc8a4 100644
> --- a/date.c
> +++ b/date.c
> @@ -1270,8 +1270,8 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
>  
>  	tl = typelen;
>  	while (tl->type) {
> -		int len = strlen(tl->type);
> -		if (match_string(date, tl->type) >= len-1) {
> +		size_t len = strlen(tl->type);
> +		if (match_string(date, tl->type)+1 >= len) {

Formatting is off here, there should be spaces around `+`, even though
you simply followed previous style. It would be nice to point out why
this change is makde in the commit message.

Patrick

```

## Junio C Hamano, 2025-01-27 16:15

Subject: Re: [PATCH v3 2/4] date.c: Fix type conversation warnings from msvc
Message-ID: <xmqqwmegutbe.fsf@gitster.g>
URL: https://gitlist.dev/e/xmqqwmegutbe.fsf%40gitster.g
In-Reply-To: <Z5c1F7oqsaPrHRiT@pks.im>

```
Patrick Steinhardt <ps@pks.im> writes:

>> diff --git a/date.c b/date.c
>> index a1b26a8dce..0a3fafc8a4 100644
>> --- a/date.c
>> +++ b/date.c
>> @@ -1270,8 +1270,8 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
>>  
>>  	tl = typelen;
>>  	while (tl->type) {
>> -		int len = strlen(tl->type);
>> -		if (match_string(date, tl->type) >= len-1) {
>> +		size_t len = strlen(tl->type);
>> +		if (match_string(date, tl->type)+1 >= len) {
>
> Formatting is off here, there should be spaces around `+`, even though
> you simply followed previous style. It would be nice to point out why
> this change is makde in the commit message.

I think len-1 here is perfectly fine, as there is no element in
typelen[] whose .type member is an empty string, and no need to
touch that.

Besides, we already have this one in 'next'.

Thanks.


```

## Patrick Steinhardt, 2025-01-28 08:45

Subject: Re: [PATCH v3 2/4] date.c: Fix type conversation warnings from msvc
Message-ID: <Z5iZQ3-egivQOcJp@pks.im>
URL: https://gitlist.dev/e/Z5iZQ3-egivQOcJp%40pks.im
In-Reply-To: <xmqqwmegutbe.fsf@gitster.g>

```
On Mon, Jan 27, 2025 at 08:15:17AM -0800, Junio C Hamano wrote:
> Patrick Steinhardt <ps@pks.im> writes:
> 
> >> diff --git a/date.c b/date.c
> >> index a1b26a8dce..0a3fafc8a4 100644
> >> --- a/date.c
> >> +++ b/date.c
> >> @@ -1270,8 +1270,8 @@ static const char *approxidate_alpha(const char *date, struct tm *tm, struct tm
> >>  
> >>  	tl = typelen;
> >>  	while (tl->type) {
> >> -		int len = strlen(tl->type);
> >> -		if (match_string(date, tl->type) >= len-1) {
> >> +		size_t len = strlen(tl->type);
> >> +		if (match_string(date, tl->type)+1 >= len) {
> >
> > Formatting is off here, there should be spaces around `+`, even though
> > you simply followed previous style. It would be nice to point out why
> > this change is makde in the commit message.
> 
> I think len-1 here is perfectly fine, as there is no element in
> typelen[] whose .type member is an empty string, and no need to
> touch that.
> 
> Besides, we already have this one in 'next'.

Huh, do we? Oh, indeed. I guess this patch should then be dropped from
future rerolls of this patch series, shouldn't it?

Patrick

```
