mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-11 11:50:06 +00:00
regex: simplify by using intprops.h
[BZ#23744] * posix/regex_internal.h [_LIBC]: Include intprops.h. (TYPE_SIGNED, INT_ADD_WRAPV) [_LIBC]: Remove. intprops.h defines them.
This commit is contained in:
parent
f4efbdfb44
commit
620a5d4cb1
@ -1,5 +1,11 @@
|
|||||||
2018-10-14 Paul Eggert <eggert@cs.ucla.edu>
|
2018-10-14 Paul Eggert <eggert@cs.ucla.edu>
|
||||||
|
|
||||||
|
regex: simplify by using intprops.h
|
||||||
|
[BZ#23744]
|
||||||
|
* posix/regex_internal.h [_LIBC]: Include intprops.h.
|
||||||
|
(TYPE_SIGNED, INT_ADD_WRAPV) [_LIBC]: Remove.
|
||||||
|
intprops.h defines them.
|
||||||
|
|
||||||
regex: __builtin_expect → __glibc_unlikely
|
regex: __builtin_expect → __glibc_unlikely
|
||||||
[BZ#23744]
|
[BZ#23744]
|
||||||
This refactoring was prompted by a problem when the regex code is
|
This refactoring was prompted by a problem when the regex code is
|
||||||
|
@ -33,23 +33,7 @@
|
|||||||
#include <stdbool.h>
|
#include <stdbool.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
/* Properties of integers. Although Gnulib has intprops.h, glibc does
|
#include <intprops.h>
|
||||||
without for now. */
|
|
||||||
#ifndef _LIBC
|
|
||||||
# include "intprops.h"
|
|
||||||
#else
|
|
||||||
/* True if the real type T is signed. */
|
|
||||||
# define TYPE_SIGNED(t) (! ((t) 0 < (t) -1))
|
|
||||||
|
|
||||||
/* True if adding the nonnegative Idx values A and B would overflow.
|
|
||||||
If false, set *R to A + B. A, B, and R may be evaluated more than
|
|
||||||
once, or zero times. Although this is not a full implementation of
|
|
||||||
Gnulib INT_ADD_WRAPV, it is good enough for glibc regex code.
|
|
||||||
FIXME: This implementation is a fragile stopgap, and this file would
|
|
||||||
be simpler and more robust if intprops.h were migrated into glibc. */
|
|
||||||
# define INT_ADD_WRAPV(a, b, r) \
|
|
||||||
(IDX_MAX - (a) < (b) ? true : (*(r) = (a) + (b), false))
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#ifdef _LIBC
|
#ifdef _LIBC
|
||||||
# include <libc-lock.h>
|
# include <libc-lock.h>
|
||||||
|
Loading…
Reference in New Issue
Block a user