view modules/regex @ 17419:020c917cba9d

regex: fix dfa race in multithreaded uses Problem reported by Ludovic Court├Ęs in <http://lists.gnu.org/archive/html/bug-gnulib/2013-05/msg00058.html>. * lib/regex_internal.h (lock_define, lock_init, lock_fini): New macros. All uses of __libc_lock_define, __libc_lock_init changed to use the first two of these. (__libc_lock_lock, __libc_lock_unlock): New macros, for non-glibc platforms. (struct re_dfa_t): Define the lock unconditionally. * lib/regexec.c (regexec, re_search_stub): Remove some now-incorrect '#ifdef _LIBC"s. * modules/regex (Depends-on): Add pthread, if we use the included regex. * lib/regcomp.c: Do actions that are not needed for glibc, but may be needed elsewhere. (regfree, re_compile_internal): Destroy the lock. (re_compile_internal): Check for lock-initialization failure.
author Paul Eggert <eggert@cs.ucla.edu>
date Sun, 19 May 2013 14:26:05 -0700
parents 45ae6ce33a1f
children 08883714ab3e
line wrap: on
line source

Description:
Regular expression matching.

Files:
lib/regex.h
lib/regex.c
lib/regex_internal.c
lib/regex_internal.h
lib/regexec.c
lib/regcomp.c
m4/eealloc.m4
m4/regex.m4
m4/mbstate_t.m4

Depends-on:
extensions
ssize_t
alloca-opt      [test $ac_use_included_regex = yes]
btowc           [test $ac_use_included_regex = yes]
gettext-h       [test $ac_use_included_regex = yes]
malloc-gnu      [test $ac_use_included_regex = yes]
memcmp          [test $ac_use_included_regex = yes]
memmove         [test $ac_use_included_regex = yes]
mbrtowc         [test $ac_use_included_regex = yes]
mbsinit         [test $ac_use_included_regex = yes]
nl_langinfo     [test $ac_use_included_regex = yes]
pthread         [test $ac_use_included_regex = yes]
stdbool         [test $ac_use_included_regex = yes]
stdint          [test $ac_use_included_regex = yes]
wchar           [test $ac_use_included_regex = yes]
wcrtomb         [test $ac_use_included_regex = yes]
wctype-h        [test $ac_use_included_regex = yes]
wctype          [test $ac_use_included_regex = yes]

configure.ac:
gl_REGEX
if test $ac_use_included_regex = yes; then
  AC_LIBOBJ([regex])
  gl_PREREQ_REGEX
fi

Makefile.am:

Include:
<regex.h>

Link:
$(LTLIBINTL) when linking with libtool, $(LIBINTL) otherwise

License:
LGPLv2+

Maintainer:
all