[zeromq-dev] HP-UX compile.
Martin Sustrik
sustrik at fastmq.com
Tue Nov 18 10:58:10 CET 2008
George,
>> We don't have HP-UX here so it would be helpful if you can check following
>> changes and let us know whether they help to get rid of the warnings:
>>
>>> "/home/gneill/zmq/trunk/zmq/ip.cpp", line 205: warning #4232-D: conversion
>>> from "sockaddr *" to a more strictly aligned type "sockaddr_in *"
>>> may cause misaligned access
>>> *addr_ = *((sockaddr_in *) res->ai_addr);
>> Copying the memory explicitly may help here:
>>
>> memcpy (addr_, res->ai_addr, sizeof (sockaddr_in));
>
> Yes this resolves the warning, but probably should be sockaddr (not
> sockaddr_in),
>
> - *addr_ = *((sockaddr_in *) res->ai_addr);
> + memcpy(addr_, res->ai_addr, sizeof(struct sockaddr));
According to POSIX specs, sockaddr should never be used directly (it
should be used only as pointer, a handle to a generic socket address,
it's used instead of more appropriate void* for historical reasons -
because it predates ANSI C specs). So when dealing with IPv4 address
proper, sockaddr_in should be OK.
>>> "/home/gneill/zmq/trunk/zmq/select_thread.cpp", line 243: warning #2940-D:
>>> missing return statement at end of non-void function
>>> "zmq::select_thread_t::process_command"
>>> }
>> I would say the compiler doesn't recognise "assert (false)" as a termination
>> statement. Try this:
>>
>> default:
>> assert (false);
>> return false;
>
> This also resolves the warning.
Ok. Fixed.
Martin
More information about the zeromq-dev
mailing list