[systemd-devel] [PATCH] fix compiler warning

Ronny Chevalier chevalier.ronny at gmail.com
Sun Mar 15 04:53:35 PDT 2015


2015-03-14 17:54 GMT+01:00 Shawn Landden <shawn at churchofgit.com>:
> On Sat, Mar 14, 2015 at 6:31 AM, Ronny Chevalier <chevalier.ronny at gmail.com>
> wrote:
>>
>> 2015-03-11 4:42 GMT+01:00 Shawn Landden <shawn at churchofgit.com>:
>> > warning: pointer/integer type mismatch in conditional expression
>> > ---
>> >  src/shared/socket-util.c | 4 ++--
>> >  1 file changed, 2 insertions(+), 2 deletions(-)
>> >
>> > diff --git a/src/shared/socket-util.c b/src/shared/socket-util.c
>> > index 5820279..73e1177 100644
>> > --- a/src/shared/socket-util.c
>> > +++ b/src/shared/socket-util.c
>> > @@ -475,8 +475,8 @@ int sockaddr_port(const struct sockaddr *_sa) {
>> >                  return -EAFNOSUPPORT;
>> >
>> >          return ntohs(sa->sa.sa_family == AF_INET6 ?
>> > -                       sa->in6.sin6_port :
>> > -                       sa->in.sin_port);
>> > +                       (uint16_t)sa->in6.sin6_port :
>> > +                       (uint16_t)sa->in.sin_port);
>> >  }
>> >
>>
>> Hi,
>>
>> I don't see any warning, and the man (man netinet_in.h) says that
>> sin_port and sin6_port are of type in_port_t which is equivalent to
>> uint16_t.
>
>
> in_port_t and in6_port_t. If the type returned by a ternary operator is not
> identical gcc-5 warns, even though they are both backed by uint16_t and thus
> there is no violation.

netinet/in.h does not provide in6_port_t according to the manpage. I
even check with the glibc and on master there is no mention of
in6_port_t.
Maybe you are using another libc?

>>
>>
>> Maybe I'm missing something?
>>
>> Ronny
>> _______________________________________________
>> systemd-devel mailing list
>> systemd-devel at lists.freedesktop.org
>> http://lists.freedesktop.org/mailman/listinfo/systemd-devel
>
>
>
>
> --
> Shawn Landden


More information about the systemd-devel mailing list