# [PATCH] fix warning from pack-objects.c

2 messages from 2006-02-23 to 2006-02-23. Participants: Luck, Tony, Andreas Ericsson.
Thread: https://gitlist.dev/t/3449

## Luck, Tony, 2006-02-23 22:42

Subject: [PATCH] fix warning from pack-objects.c
Message-ID: <200602232242.k1NMgdAJ018406@agluck-lia64.sc.intel.com>
URL: https://gitlist.dev/e/200602232242.k1NMgdAJ018406%40agluck-lia64.sc.intel.com

```
When compiling on ia64 I get this warning (from gcc 3.4.3):

gcc -o pack-objects.o -c -g -O2 -Wall -DSHA1_HEADER='<openssl/sha.h>'  pack-objects.c
pack-objects.c: In function `pack_revindex_ix':
pack-objects.c:94: warning: cast from pointer to integer of different size

A double cast (first to long, then to int) shuts gcc up, but is there
a better way?

Signed-off-by: Tony Luck <tony.luck@intel.com>

---

diff --git a/pack-objects.c b/pack-objects.c
index 8f352aa..c985fab 100644
--- a/pack-objects.c
+++ b/pack-objects.c
@@ -91,7 +91,7 @@ static int reused_delta = 0;
 
 static int pack_revindex_ix(struct packed_git *p)
 {
-	unsigned int ui = (unsigned int) p;
+	unsigned int ui = (unsigned int)(long)p;
 	int i;
 
 	ui = ui ^ (ui >> 16); /* defeat structure alignment */

```

## Andreas Ericsson, 2006-02-23 22:51

Subject: Re: [PATCH] fix warning from pack-objects.c
Message-ID: <43FE3C54.2080103@op5.se>
URL: https://gitlist.dev/e/43FE3C54.2080103%40op5.se
In-Reply-To: <200602232242.k1NMgdAJ018406@agluck-lia64.sc.intel.com>

```
Luck, Tony wrote:
> When compiling on ia64 I get this warning (from gcc 3.4.3):
> 
> gcc -o pack-objects.o -c -g -O2 -Wall -DSHA1_HEADER='<openssl/sha.h>'  pack-objects.c
> pack-objects.c: In function `pack_revindex_ix':
> pack-objects.c:94: warning: cast from pointer to integer of different size
> 
> A double cast (first to long, then to int) shuts gcc up, but is there
> a better way?
> 

Make ui and i unsigned long and cast p to unsigned long (or perhaps 
ptrdiff_t is preferred?). On 32-bit archs it's no difference, but 64-bit 
archs can work with their native size. It's slightly faster (although I 
expect the compiler takes care of that anyways).

I noticed this earlier on my shiny AMD FX2 64-bit. The tests run just 
fine with my solution. I expect they will with yours as well.

> Signed-off-by: Tony Luck <tony.luck@intel.com>
> 
> ---
> 
> diff --git a/pack-objects.c b/pack-objects.c
> index 8f352aa..c985fab 100644
> --- a/pack-objects.c
> +++ b/pack-objects.c
> @@ -91,7 +91,7 @@ static int reused_delta = 0;
>  
>  static int pack_revindex_ix(struct packed_git *p)
>  {
> -	unsigned int ui = (unsigned int) p;
> +	unsigned int ui = (unsigned int)(long)p;
>  	int i;
>  
>  	ui = ui ^ (ui >> 16); /* defeat structure alignment */
> -
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> 

-- 
Andreas Ericsson                   andreas.ericsson@op5.se
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231

```
