From d0145e03799e484f3a53d79de3b3f34162ee9d3c Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Mon, 24 Apr 2006 08:55:46 +0000 Subject: Updated to fedora-glibc-20060424T0820 --- sysdeps/unix/sysv/linux/getsourcefilter.c | 28 ++++++++++++++++------------ 1 file changed, 16 insertions(+), 12 deletions(-) (limited to 'sysdeps/unix/sysv/linux/getsourcefilter.c') diff --git a/sysdeps/unix/sysv/linux/getsourcefilter.c b/sysdeps/unix/sysv/linux/getsourcefilter.c index fdcf8d6130..a6f89a3cc9 100644 --- a/sysdeps/unix/sysv/linux/getsourcefilter.c +++ b/sysdeps/unix/sysv/linux/getsourcefilter.c @@ -1,5 +1,5 @@ /* Get source filter. Linux version. - Copyright (C) 2004 Free Software Foundation, Inc. + Copyright (C) 2004, 2006 Free Software Foundation, Inc. This file is part of the GNU C Library. Contributed by Ulrich Drepper , 2004. @@ -112,23 +112,27 @@ getsourcefilter (int s, uint32_t interface, const struct sockaddr *group, gf->gf_numsrc = *numsrc; /* We need to provide the appropriate socket level value. */ + int result; int sol = __get_sol (group->sa_family, grouplen); if (sol == -1) { __set_errno (EINVAL); - return -1; + result = -1; } - - int result = __getsockopt (s, sol, MCAST_MSFILTER, gf, &needed); - - /* If successful, copy the results to the places the caller wants - them in. */ - if (result == 0) + else { - *fmode = gf->gf_fmode; - memcpy (slist, gf->gf_slist, - MIN (*numsrc, gf->gf_numsrc) * sizeof (struct sockaddr_storage)); - *numsrc = gf->gf_numsrc; + result = __getsockopt (s, sol, MCAST_MSFILTER, gf, &needed); + + /* If successful, copy the results to the places the caller wants + them in. */ + if (result == 0) + { + *fmode = gf->gf_fmode; + memcpy (slist, gf->gf_slist, + MIN (*numsrc, gf->gf_numsrc) + * sizeof (struct sockaddr_storage)); + *numsrc = gf->gf_numsrc; + } } if (! use_alloca) -- cgit 1.4.1