qemu-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [Qemu-devel] [PATCH] Fix conversions from pointer to int and vice ve


From: Kevin Wolf
Subject: Re: [Qemu-devel] [PATCH] Fix conversions from pointer to int and vice versa
Date: Thu, 24 Feb 2011 10:17:10 +0100
User-agent: Mozilla/5.0 (X11; U; Linux x86_64; en-US; rv:1.9.1.15) Gecko/20101027 Fedora/3.0.10-1.fc12 Thunderbird/3.0.10

Am 24.02.2011 08:21, schrieb Markus Armbruster:
> Stefan Weil <address@hidden> writes:
> 
>> Here the int values fds[0], sigfd, s, sock and fd are converted
>> to void pointers which are later converted back to an int value.
>>
>> These conversions should always use intptr_t instead of unsigned long.
>>
>> They are needed for environments where sizeof(long) != sizeof(void *).
> 
> To be precise: when you want to cast a pointer to a signed integer type
> and back without loss, intptr_t is the signed integer type to use.
> 
> But here we're dealing with the opposite case: cast int to pointer and
> back.
> 
>> Signed-off-by: Stefan Weil <address@hidden>
>> ---
>>  cpus.c           |    8 ++++----
>>  migration-tcp.c  |    4 ++--
>>  migration-unix.c |    4 ++--
>>  qemu-char.c      |    4 ++--
>>  4 files changed, 10 insertions(+), 10 deletions(-)
>>
>> diff --git a/cpus.c b/cpus.c
>> index 0f33945..3c4e1b8 100644
>> --- a/cpus.c
>> +++ b/cpus.c
>> @@ -267,7 +267,7 @@ static void qemu_event_increment(void)
>>  
>>  static void qemu_event_read(void *opaque)
>>  {
>> -    int fd = (unsigned long)opaque;
>> +    int fd = (intptr_t)opaque;
>>      ssize_t len;
>>      char buffer[512];
>>  
> 
> Why can't you cast straight to int?

You would get warnings about a pointer being cast to an integer of
different size (the behaviour is undefined if the integer is too small).
I think you might also get a warning for the opposite direction.

Kevin



reply via email to

[Prev in Thread] Current Thread [Next in Thread]