[v2] Add missing braces to bsearch inline implementation [BZ #28400]

Message ID 87zgru0w0s.fsf@oldenburg.str.redhat.com
State New
Headers show
Series
  • [v2] Add missing braces to bsearch inline implementation [BZ #28400]
Related show

Commit Message

Noah Goldstein via Libc-alpha Sept. 30, 2021, 6:16 p.m.
GCC treats the pragma as a statement, so that the else branch only
consists of the pragma, not the return statement.

Fixes commit a725ff1de965f4cc4f36a7e8ae795d40ca0350d7 ("Suppress
-Wcast-qual warnings in bsearch").

---
v2: Added bug number.  Tested on i686-linux-gnu and x86_64-linux-gnu.
    The regressions are gone.

 bits/stdlib-bsearch.h | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

Comments

Noah Goldstein via Libc-alpha Sept. 30, 2021, 6:37 p.m. | #1
On Thu, Sep 30, 2021 at 11:16 AM Florian Weimer <fweimer@redhat.com> wrote:
>

> GCC treats the pragma as a statement, so that the else branch only

> consists of the pragma, not the return statement.

>

> Fixes commit a725ff1de965f4cc4f36a7e8ae795d40ca0350d7 ("Suppress

> -Wcast-qual warnings in bsearch").

>

> ---

> v2: Added bug number.  Tested on i686-linux-gnu and x86_64-linux-gnu.

>     The regressions are gone.

>

>  bits/stdlib-bsearch.h | 4 +++-

>  1 file changed, 3 insertions(+), 1 deletion(-)

>

> diff --git a/bits/stdlib-bsearch.h b/bits/stdlib-bsearch.h

> index d688ed2e15..e2fcea6e17 100644

> --- a/bits/stdlib-bsearch.h

> +++ b/bits/stdlib-bsearch.h

> @@ -36,14 +36,16 @@ bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,

>        else if (__comparison > 0)

>         __l = __idx + 1;

>        else

> +       {

>  #if __GNUC_PREREQ(4, 6)

>  # pragma GCC diagnostic push

>  # pragma GCC diagnostic ignored "-Wcast-qual"

>  #endif

> -       return (void *) __p;

> +         return (void *) __p;

>  #if __GNUC_PREREQ(4, 6)

>  # pragma GCC diagnostic pop

>  #endif

> +       }

>      }

>

>    return NULL;

>


LGTM.

Reviewed-by: H.J. Lu <hjl.tools@gmail.com>


Thanks.

-- 
H.J.

Patch

diff --git a/bits/stdlib-bsearch.h b/bits/stdlib-bsearch.h
index d688ed2e15..e2fcea6e17 100644
--- a/bits/stdlib-bsearch.h
+++ b/bits/stdlib-bsearch.h
@@ -36,14 +36,16 @@  bsearch (const void *__key, const void *__base, size_t __nmemb, size_t __size,
       else if (__comparison > 0)
 	__l = __idx + 1;
       else
+	{
 #if __GNUC_PREREQ(4, 6)
 # pragma GCC diagnostic push
 # pragma GCC diagnostic ignored "-Wcast-qual"
 #endif
-	return (void *) __p;
+	  return (void *) __p;
 #if __GNUC_PREREQ(4, 6)
 # pragma GCC diagnostic pop
 #endif
+	}
     }
 
   return NULL;