From ceb9e56b3d1f8c1922e0526c2e841373843460e2 Mon Sep 17 00:00:00 2001 From: Paul Pluzhnikov Date: Wed, 13 Jun 2012 09:57:18 -0700 Subject: Suppress sign-conversion warning from FD_SET. [BZ #14210] See . * 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. --- ChangeLog | 9 +++++++++ debug/fdelt_chk.c | 8 ++++---- 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 + + [BZ #14210] + Suppress sign-conversion warning from FD_SET. + See . + * 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 [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 -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)); }) -- cgit v1.2.3