diff mbox series

[3/4] diffcore-delta.c: LLP64 compatibility, upcast unity for left shift

Message ID 20211126113614.709-4-philipoakley@iee.email (mailing list archive)
State Superseded
Headers show
Series Fix LLP64 `(size_t)1` compatibility VS C4334 warnings | expand

Commit Message

Philip Oakley Nov. 26, 2021, 11:36 a.m. UTC
Visual Studio reports C4334 "was 64-bit shift intended" warning
because of size miss-match.

Promote unity to the matching type to fit with its subsequent operation.

Signed-off-by: Philip Oakley <philipoakley@iee.email>
---
 diffcore-delta.c | 6 +++---
 1 file changed, 3 insertions(+), 3 deletions(-)

Comments

Derrick Stolee Nov. 29, 2021, 2:44 p.m. UTC | #1
On 11/26/2021 6:36 AM, Philip Oakley wrote:
> Visual Studio reports C4334 "was 64-bit shift intended" warning
> because of size miss-match.
> 
> Promote unity to the matching type to fit with its subsequent operation.
> 
> Signed-off-by: Philip Oakley <philipoakley@iee.email>
> ---
>  diffcore-delta.c | 6 +++---
>  1 file changed, 3 insertions(+), 3 deletions(-)
> 
> diff --git a/diffcore-delta.c b/diffcore-delta.c
> index 5668ace60d..a4e86dfa38 100644
> --- a/diffcore-delta.c
> +++ b/diffcore-delta.c
> @@ -133,10 +133,10 @@ static struct spanhash_top *hash_chars(struct repository *r,
>  
>  	i = INITIAL_HASH_SIZE;
>  	hash = xmalloc(st_add(sizeof(*hash),
> -			      st_mult(sizeof(struct spanhash), 1<<i)));
> +			      st_mult(sizeof(struct spanhash), (size_t)1<<i)));

This could use spaces around "<<"

>  	hash->alloc_log2 = i;
>  	hash->free = INITIAL_FREE(i);
> -	memset(hash->data, 0, sizeof(struct spanhash) * (1<<i));
> +	memset(hash->data, 0, sizeof(struct spanhash) * ((size_t)1 << i));

Especially because you correctly add them here.

Thanks,
-Stolee
Philip Oakley Nov. 29, 2021, 11:50 p.m. UTC | #2
On 29/11/2021 14:44, Derrick Stolee wrote:
> On 11/26/2021 6:36 AM, Philip Oakley wrote:
>> Visual Studio reports C4334 "was 64-bit shift intended" warning
>> because of size miss-match.
>>
>> Promote unity to the matching type to fit with its subsequent operation.
>>
>> Signed-off-by: Philip Oakley <philipoakley@iee.email>
>> ---
>>  diffcore-delta.c | 6 +++---
>>  1 file changed, 3 insertions(+), 3 deletions(-)
>>
>> diff --git a/diffcore-delta.c b/diffcore-delta.c
>> index 5668ace60d..a4e86dfa38 100644
>> --- a/diffcore-delta.c
>> +++ b/diffcore-delta.c
>> @@ -133,10 +133,10 @@ static struct spanhash_top *hash_chars(struct repository *r,
>>  
>>  	i = INITIAL_HASH_SIZE;
>>  	hash = xmalloc(st_add(sizeof(*hash),
>> -			      st_mult(sizeof(struct spanhash), 1<<i)));
>> +			      st_mult(sizeof(struct spanhash), (size_t)1<<i)));
> This could use spaces around "<<"
OK.
>
>>  	hash->alloc_log2 = i;
>>  	hash->free = INITIAL_FREE(i);
>> -	memset(hash->data, 0, sizeof(struct spanhash) * (1<<i));
>> +	memset(hash->data, 0, sizeof(struct spanhash) * ((size_t)1 << i));
> Especially because you correctly add them here.
True. The spacing isn't that consistent in the code base, but adding the
spaces here does look better.
>
> Thanks,
> -Stolee

Philip
diff mbox series

Patch

diff --git a/diffcore-delta.c b/diffcore-delta.c
index 5668ace60d..a4e86dfa38 100644
--- a/diffcore-delta.c
+++ b/diffcore-delta.c
@@ -133,10 +133,10 @@  static struct spanhash_top *hash_chars(struct repository *r,
 
 	i = INITIAL_HASH_SIZE;
 	hash = xmalloc(st_add(sizeof(*hash),
-			      st_mult(sizeof(struct spanhash), 1<<i)));
+			      st_mult(sizeof(struct spanhash), (size_t)1<<i)));
 	hash->alloc_log2 = i;
 	hash->free = INITIAL_FREE(i);
-	memset(hash->data, 0, sizeof(struct spanhash) * (1<<i));
+	memset(hash->data, 0, sizeof(struct spanhash) * ((size_t)1 << i));
 
 	n = 0;
 	accum1 = accum2 = 0;
@@ -159,7 +159,7 @@  static struct spanhash_top *hash_chars(struct repository *r,
 		n = 0;
 		accum1 = accum2 = 0;
 	}
-	QSORT(hash->data, 1ul << hash->alloc_log2, spanhash_cmp);
+	QSORT(hash->data, (size_t)1ul << hash->alloc_log2, spanhash_cmp);
 	return hash;
 }