threads / patch / 62855

v3, 4 partsdate.c: Fix type conversation warnings from msvc

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

## tl;dr

4 messages between Jan 26, 2025 and Jan 28, 2025. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Sören Krecker· Jan 26, 2025, 12:58 UTC · lore

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(-)
Show changes to date.c +4 −4
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· Jan 27, 2025, 07:26 UTC · re: Sören Krecker · lore

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

On Sun, Jan 26, 2025 at 01:58:50PM +0100, Sören Krecker wrote:
Show 5 quoted lines
> 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.

Show 12 quoted lines
> 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· Jan 27, 2025, 16:15 UTC · re: Patrick Steinhardt · lore

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

Patrick Steinhardt <ps@pks.im> writes:
Show 16 quoted lines
>> 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· Jan 28, 2025, 08:45 UTC · re: Junio C Hamano · lore

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

On Mon, Jan 27, 2025 at 08:15:17AM -0800, Junio C Hamano wrote:
Show 24 quoted lines
> 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

← back to recent threads