On Wed, Feb 24, 2016 at 11:38:36PM +0100, Harald Welte wrote:
On Wed, Feb 24, 2016 at 08:07:21PM +0100, Neels Hofmeyr wrote:
On my 64bit system, I get warnings about casting int to pointer of different size and vice versa. However, below patch only shifts the warnings to 32bit systems, right?
· I don't think so. 'long' typically corresponds to the pointer size, at least based on my experience. Of course the C standard doesn't give you any guarantees and just states that it should be at least the size of a signed 32bit integer. · according to page 6 of http://www.agner.org/optimize/calling_conventions.pdf the only practical exception seems to be windows, where on 64bit even a 'long' is only 32bit ;)
can't do that then, can we ;)
On Thu, Feb 25, 2016 at 10:03:21AM +0100, Jacob wrote:
What about using uintptr_t from stdint.h ?
stdint.h:typedef unsigned long int uintptr_t;
So that would work indeed. I'd have interpreted the name to mean unsigned int* but it seems to be made for this specific case.
But I agree that the case per se is still odd:
On Wed, Feb 24, 2016 at 11:38:36PM +0100, Harald Welte wrote:
The more interesting question is probably why is vty->index not pointing to 'struct osmo_msc_data' in the first place? That's what we typically use, rather than storing integers in the pointer and then perfomring lookups on that. Holger?
/me escalating to hfreyther
~Neels