diff options
-rw-r--r-- | ChangeLog | 9 | ||||
-rw-r--r-- | debug/fdelt_chk.c | 8 | ||||
-rw-r--r-- | misc/bits/select2.h | 13 |
3 files changed, 20 insertions, 10 deletions
diff --git a/ChangeLog b/ChangeLog index 60224c5300..4dff767e36 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,12 @@ +2012-06-13 Paul Pluzhnikov <ppluzhnikov@google.com> + + [BZ #14210] + Suppress sign-conversion warning from FD_SET. + See <http://sourceware.org/ml/libc-alpha/2012-05/msg01794.html>. + * debug/fdelt_chk.c (__fdelt_chk): Accept and return long int, + not unsigned long int. + * misc/bits/select2.h (__fdelt_chk, __fdelt_warn, __FD_ELT): Likewise. + 2012-06-12 H.J. Lu <hongjiu.lu@intel.com> [BZ #14050] diff --git a/debug/fdelt_chk.c b/debug/fdelt_chk.c index 5e06f8f6a9..ded3f2f64c 100644 --- a/debug/fdelt_chk.c +++ b/debug/fdelt_chk.c @@ -1,4 +1,4 @@ -/* Copyright (C) 2011 Free Software Foundation, Inc. +/* Copyright (C) 2011, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,10 +18,10 @@ #include <sys/select.h> -unsigned long int -__fdelt_chk (unsigned long int d) +long int +__fdelt_chk (long int d) { - if (d >= FD_SETSIZE) + if (d < 0 || d >= FD_SETSIZE) __chk_fail (); return d / __NFDBITS; diff --git a/misc/bits/select2.h b/misc/bits/select2.h index 9679925b06..76ae36877a 100644 --- a/misc/bits/select2.h +++ b/misc/bits/select2.h @@ -1,5 +1,5 @@ /* Checking macros for select functions. - Copyright (C) 2011 Free Software Foundation, Inc. + Copyright (C) 2011, 2012 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -21,14 +21,15 @@ #endif /* Helper functions to issue warnings and errors when needed. */ -extern unsigned long int __fdelt_chk (unsigned long int __d); -extern unsigned long int __fdelt_warn (unsigned long int __d) +extern long int __fdelt_chk (long int __d); +extern long int __fdelt_warn (long int __d) __warnattr ("bit outside of fd_set selected"); #undef __FD_ELT #define __FD_ELT(d) \ __extension__ \ - ({ unsigned long int __d = (d); \ + ({ long int __d = (d); \ (__builtin_constant_p (__d) \ - ? (__d >= __FD_SETSIZE \ - ? __fdelt_warn (__d) : (__d / __NFDBITS)) \ + ? (0 <= __d && __d < __FD_SETSIZE \ + ? (__d / __NFDBITS) \ + : __fdelt_warn (__d)) \ : __fdelt_chk (__d)); }) |