assert: Suppress pedantic warning caused by statement expression [BZ #21242]

(cherry picked from commit 8b2c63e4e2ad1fd161f80004ed30624f2a37b57b)
This commit is contained in:
Florian Weimer 2017-08-11 15:48:14 +02:00
parent c55ad6452e
commit 2aa1a7a8f8
3 changed files with 17 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2017-08-11 Florian Weimer <fweimer@redhat.com>
[BZ #21242]
* assert/assert.h [__GNUC__ && !__STRICT_ANSI__] (assert):
Suppress pedantic warning resulting from statement expression.
(__ASSERT_FUNCTION): Add missing __extension__.
2017-08-10 Florian Weimer <fweimer@redhat.com>
* malloc/malloc.c (get_max_fast): Reimplement as an inline

1
NEWS
View File

@ -9,6 +9,7 @@ Version 2.26.1
The following bugs are resolved with this release:
[21242] assert: Suppress pedantic warning caused by statement expression
[21885] getaddrinfo: Release resolver context on error in gethosts
[21932] Unpaired __resolv_context_get in generic get*_r implementation

View File

@ -91,13 +91,19 @@ __END_DECLS
? __ASSERT_VOID_CAST (0) \
: __assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION))
# else
/* The first occurrence of EXPR is not evaluated due to the sizeof,
but will trigger any pedantic warnings masked by the __extension__
for the second occurrence. The explicit comparison against zero is
required to support function pointers and bit fields in this
context, and to suppress the evaluation of variable length
arrays. */
# define assert(expr) \
({ \
((void) sizeof ((expr) == 0), __extension__ ({ \
if (expr) \
; /* empty */ \
else \
__assert_fail (#expr, __FILE__, __LINE__, __ASSERT_FUNCTION); \
})
}))
# endif
# ifdef __USE_GNU
@ -113,7 +119,7 @@ __END_DECLS
C9x has a similar variable called __func__, but prefer the GCC one since
it demangles C++ function names. */
# if defined __cplusplus ? __GNUC_PREREQ (2, 6) : __GNUC_PREREQ (2, 4)
# define __ASSERT_FUNCTION __PRETTY_FUNCTION__
# define __ASSERT_FUNCTION __extension__ __PRETTY_FUNCTION__
# else
# if defined __STDC_VERSION__ && __STDC_VERSION__ >= 199901L
# define __ASSERT_FUNCTION __func__