This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
[MTASCsft PATCH WIP4 20/28] Thread safety documentation.
- From: Alexandre Oliva <aoliva at redhat dot com>
- To: libc-alpha at sourceware dot org
- Cc: carlos at redhat dot com, mtk dot manpages at gmail dot com
- Date: Sat, 12 Oct 2013 04:13:02 -0300
- Subject: [MTASCsft PATCH WIP4 20/28] Thread safety documentation.
- Authentication-results: sourceware.org; auth=none
- References: <20131012070020 dot 7511 dot 90546 dot stgit at frit dot home>
for ChangeLog
* manual/pattern.texi: Document thread safety properties.
---
manual/pattern.texi | 489 +++++++++++++++++++++++++++++++++++++++++++++++++++
1 file changed, 489 insertions(+)
diff --git a/manual/pattern.texi b/manual/pattern.texi
index 1966f3f..da2c8b6d2 100644
--- a/manual/pattern.texi
+++ b/manual/pattern.texi
@@ -736,6 +736,251 @@ expression into it by calling @code{regcomp}.
@comment regex.h
@comment POSIX.2
@deftypefun int regcomp (regex_t *restrict @var{compiled}, const char *restrict @var{pattern}, int @var{cflags})
+@safety{@mtsafe{glocale}@asunsafe{asynconsist, asmalloc, selfdeadlock, shlimb}@acunsafe{incansist, lockleak, memleak, fdleak, shlimb}}
+@c All of the issues have to do with memory allocation and multi-byte
+@c character handling present in the input string, or implied by ranges
+@c or inverted character classes.
+@c (re_)malloc asmalloc, memleak
+@c re_compile_internal glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c (re_)realloc asmalloc, memleak (asynconsist, incansist, for other
+@c callers that don't zero the buffer)
+@c init_dfa glocale, asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c (re_)malloc asmalloc, memleak
+@c calloc asmalloc, memleak
+@c _NL_CURRENT ok
+@c _NL_CURRENT_WORD ok
+@c btowc asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c libc_lock_init ok
+@c re_string_construct glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_construct_common ok
+@c re_string_realloc_buffers asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c build_wcs_upper_buffer glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c isascii ok
+@c mbsinit ok
+@c toupper ok
+@c mbrtowc dup asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c iswlower glocale
+@c towupper glocale
+@c wcrtomb dup asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c (re_)malloc dup asmalloc, memleak
+@c build_upper_buffer ok (glocale, but optimized)
+@c islower ok
+@c toupper ok
+@c build_wcs_buffer asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c mbrtowc dup asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_translate_buffer ok
+@c parse (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c fetch_token (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c peek_token ok (maybe glocale)
+@c re_string_eoi ok
+@c re_string_peek_byte ok
+@c re_string_cur_idx ok
+@c re_string_length ok
+@c re_string_peek_byte_case ok (maybe glocale)
+@c re_string_peek_byte dup ok
+@c re_string_is_single_byte_char ok
+@c isascii ok
+@c re_string_peek_byte dup ok
+@c re_string_wchar_at ok
+@c re_string_skip_bytes ok
+@c re_string_skip_bytes dup ok
+@c parse_reg_exp (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c parse_branch (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c parse_expression (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c create_token_tree dup asmalloc, memleak
+@c re_string_eoi dup ok
+@c re_string_first_byte ok
+@c fetch_token dup (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c create_tree dup asmalloc, memleak
+@c parse_sub_exp (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c fetch_token dup (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c parse_reg_exp dup (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c postorder() asmalloc, memleak
+@c free_tree asmalloc, memleak
+@c free_token dup asmalloc, memleak
+@c create_tree dup asmalloc, memleak
+@c parse_bracket_exp (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c _NL_CURRENT dup ok
+@c _NL_CURRENT_WORD dup ok
+@c calloc dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c peek_token_bracket ok
+@c re_string_eoi dup ok
+@c re_string_peek_byte dup ok
+@c re_string_first_byte dup ok
+@c re_string_cur_idx dup ok
+@c re_string_length dup ok
+@c re_string_skip_bytes dup ok
+@c bitset_set ok
+@c re_string_skip_bytes ok
+@c parse_bracket_element ok (maybe glocale)
+@c re_string_char_size_at ok
+@c re_string_wchar_at dup ok
+@c re_string_skip_bytes dup ok
+@c parse_bracket_symbol ok (maybe glocale)
+@c re_string_eoi dup ok
+@c re_string_fetch_byte_case ok (maybe glocale)
+@c re_string_fetch_byte ok
+@c re_string_first_byte dup ok
+@c isascii ok
+@c re_string_char_size_at dup ok
+@c re_string_skip_bytes dup ok
+@c re_string_fetch_byte dup ok
+@c re_string_peek_byte dup ok
+@c re_string_skip_bytes dup ok
+@c peek_token_bracket dup ok
+@c auto build_range_exp asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c auto lookup_collation_sequence_value asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c btowc dup asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c collseq_table_lookup ok
+@c auto seek_collating_symbol_entry dup ok
+@c (re_)realloc dup asmalloc, memleak
+@c collseq_table_lookup dup ok
+@c bitset_set dup ok
+@c (re_)realloc dup asmalloc, memleak
+@c build_equiv_class (maybe glocale), asmalloc, memleak
+@c _NL_CURRENT ok
+@c auto findidx ok
+@c bitset_set dup ok
+@c (re_)realloc dup asmalloc, memleak
+@c auto build_collating_symbol asmalloc, memleak
+@c auto seek_collating_symbol_entry ok
+@c bitset_set dup ok
+@c (re_)realloc dup asmalloc, memleak
+@c build_charclass (maybe glocale), asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c bitset_set dup ok
+@c isalnum ok
+@c iscntrl ok
+@c isspace ok
+@c isalpha ok
+@c isdigit ok
+@c isprint ok
+@c isupper ok
+@c isblank ok
+@c isgraph ok
+@c ispunct ok
+@c isxdigit ok
+@c bitset_not ok
+@c bitset_mask ok
+@c create_token_tree dup asmalloc, memleak
+@c create_tree dup asmalloc, memleak
+@c free_charset dup asmalloc, memleak
+@c init_word_char (maybe glocale)
+@c isalnum ok
+@c build_charclass_op (maybe glocale), asmalloc, memleak
+@c calloc dup asmalloc, memleak
+@c build_charclass dup (maybe glocale), asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c free_charset dup asmalloc, memleak
+@c bitset_set dup ok
+@c bitset_not dup ok
+@c bitset_mask dup ok
+@c create_token_tree dup asmalloc, memleak
+@c create_tree dup asmalloc, memleak
+@c parse_dup_op (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_cur_idx dup ok
+@c fetch_number ok (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c fetch_token dup (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_set_index ok
+@c postorder() asmalloc, memleak
+@c free_tree dup asmalloc, memleak
+@c mark_opt_subexp ok
+@c duplicate_tree asmalloc, memleak
+@c create_token_tree dup asmalloc, memleak
+@c create_tree dup asmalloc, memleak
+@c postorder() asmalloc, memleak
+@c free_tree dup asmalloc, memleak
+@c fetch_token dup (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c parse_branch dup (maybe glocale), asynconsist, asmalloc, sefldeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c create_tree dup asmalloc, memleak
+@c create_tree asmalloc, memleak
+@c create_token_tree asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c analyze asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c preorder() asmalloc, memleak
+@c optimize_subexps ok
+@c calc_next ok
+@c link_nfa_nodes asmalloc, memleak
+@c re_node_set_init_1 asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c re_node_set_init_2 asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c postorder() asmalloc, memleak
+@c lower_subexps asmalloc, memleak
+@c lower_subexp asmalloc, memleak
+@c create_tree dup asmalloc, memleak
+@c calc_first asmalloc, memleak
+@c re_dfa_add_node asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c re_node_set_init_empty ok
+@c calc_eclosure asmalloc, memleak
+@c calc_eclosure_iter asmalloc, memleak
+@c re_node_set_alloc asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c duplicate_node_closure asmalloc, memleak
+@c re_node_set_empty ok
+@c duplicate_node asmalloc, memleak
+@c re_dfa_add_node dup asmalloc, memleak
+@c re_node_set_insert asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c search_duplicated_node ok
+@c re_node_set_merge asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c re_node_set_free asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c re_node_set_insert dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c calc_inveclosure asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c re_node_set_insert_last asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c optimize_utf8 ok
+@c create_initial_state asmalloc, memleak
+@c re_node_set_init_copy asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c re_node_set_contains ok
+@c re_node_set_merge dup asmalloc, memleak
+@c re_acquire_state_context asmalloc, memleak
+@c calc_state_hash ok
+@c re_node_set_compare ok
+@c create_cd_newstate asmalloc, memleak
+@c calloc dup asmalloc, memleak
+@c re_node_set_init_copy dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c free_state asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c NOT_SATISFY_PREV_CONSTRAINT ok
+@c re_node_set_remove_at ok
+@c register_state asmalloc, memleak
+@c re_node_set_alloc dup asmalloc, memleak
+@c re_node_set_insert_last dup asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c free_workarea_compile asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c re_string_destruct asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c free_dfa_content asmalloc, memleak
+@c free_token asmalloc, memleak
+@c free_charset asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_compile_fastmap glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_compile_fastmap_iter glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_set_fastmap ok
+@c tolower ok
+@c mbrtowc dup asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c wcrtomb dup asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c towlower glocale
+@c _NL_CURRENT ok
+@c (re_)free asmalloc, memleak
The function @code{regcomp} ``compiles'' a regular expression into a
data structure that you can use with @code{regexec} to match against a
string. The compiled regular expression format is designed for
@@ -885,6 +1130,247 @@ unless the regular expression contains anchor characters (@samp{^} or
@comment regex.h
@comment POSIX.2
@deftypefun int regexec (const regex_t *restrict @var{compiled}, const char *restrict @var{string}, size_t @var{nmatch}, regmatch_t @var{matchptr}[restrict], int @var{eflags})
+@safety{@mtsafe{glocale}@asunsafe{asynconsist, asmalloc, selfdeadlock, shlimb}@acunsafe{incansist, lockleak, memleak, fdleak, shlimb}}
+@c libc_lock_lock selfdeadlock, lockleak
+@c re_search_internal glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_allocate asmalloc, memleak
+@c re_string_construct_common dup ok
+@c re_string_realloc_buffers dup asmalloc, memleak
+@c match_ctx_init asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c re_string_byte_at ok
+@c re_string_first_byte dup ok
+@c check_matching glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_cur_idx dup ok
+@c acquire_init_state_context dup asmalloc, memleak
+@c re_string_context_at ok
+@c re_string_byte_at dup ok
+@c bitset_contain ok
+@c re_acquire_state_context dup asmalloc, memleak
+@c check_subexp_matching_top asmalloc, memleak
+@c match_ctx_add_subtop asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c calloc dup asmalloc, memleak
+@c transit_state_bkref glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_cur_idx dup ok
+@c re_string_context_at dup ok
+@c NOT_SATISFY_NEXT_CONSTRAINT ok
+@c get_subexp glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_get_buffer ok
+@c search_cur_bkref_entry ok
+@c clean_state_log_if_needed glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c extend_buffers glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_realloc_buffers dup asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c build_wcs_upper_buffer dup glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c build_upper_buffer dup ok (glocale, but optimized)
+@c build_wcs_buffer dup asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_translate_buffer dup ok
+@c get_subexp_sub glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c check_arrival glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c (re_)realloc dup asmalloc, memleak
+@c re_string_context_at dup ok
+@c re_node_set_init_1 dup asmalloc, memleak
+@c check_arrival_expand_ecl asmalloc, memleak
+@c re_node_set_alloc dup asmalloc, memleak
+@c find_subexp_node ok
+@c re_node_set_merge dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c check_arrival_expand_ecl_sub asmalloc, memleak
+@c re_node_set_contains dup ok
+@c re_node_set_insert dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_node_set_init_copy dup asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c expand_bkref_cache asmalloc, memleak
+@c search_cur_bkref_entry dup ok
+@c re_node_set_contains dup ok
+@c re_node_set_init_1 dup asmalloc, memleak
+@c check_arrival_expand_ecl dup asmalloc, memleak
+@c re_node_set_merge dup asmalloc, memleak
+@c re_node_set_init_copy dup asmalloc, memleak
+@c re_node_set_insert dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_acquire_state asmalloc, memleak
+@c calc_state_hash dup ok
+@c re_node_set_compare dup ok
+@c create_ci_newstate asmalloc, memleak
+@c calloc dup asmalloc, memleak
+@c re_node_set_init_copy dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c register_state dup asmalloc, memleak
+@c free_state dup asmalloc, memleak
+@c re_acquire_state_context dup asmalloc, memleak
+@c re_node_set_merge dup asmalloc, memleak
+@c check_arrival_add_next_nodes glocale, asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c check_node_accept_bytes glocale, asmalloc, memleak
+@c re_string_byte_at dup ok
+@c re_string_char_size_at dup ok
+@c re_string_elem_size_at (maybe glocale)
+@c _NL_CURRENT_WORD dup ok
+@c _NL_CURRENT dup ok
+@c auto findidx dup ok
+@c _NL_CURRENT_WORD dup ok
+@c _NL_CURRENT dup ok
+@c collseq_table_lookup dup ok
+@c find_collation_sequence_value (maybe glocale)
+@c _NL_CURRENT_WORD dup ok
+@c _NL_CURRENT dup ok
+@c auto findidx dup ok
+@c wcscoll glocale, asmalloc, memleak
+@c re_node_set_empty dup ok
+@c re_node_set_merge dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_node_set_insert dup asmalloc, memleak
+@c re_acquire_state dup asmalloc, memleak
+@c check_node_accept ok
+@c re_string_byte_at dup ok
+@c bitset_contain dup ok
+@c re_string_context_at dup ok
+@c NOT_SATISFY_NEXT_CONSTRAINT dup ok
+@c match_ctx_add_entry asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c clean_state_log_if_needed dup glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c extend_buffers dup glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c find_subexp_node dup ok
+@c calloc dup asmalloc, memleak
+@c check_arrival dup ***
+@c match_ctx_add_sublast asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c re_acquire_state_context dup asmalloc, memleak
+@c re_node_set_init_union asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c re_node_set_init_copy dup asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c re_node_set_free dup asmalloc, memleak
+@c check_subexp_matching_top dup asmalloc, memleak
+@c check_halt_state_context ok
+@c re_string_context_at dup ok
+@c check_halt_node_context ok
+@c NOT_SATISFY_NEXT_CONSTRAINT dup ok
+@c re_string_eoi dup ok
+@c extend_buffers dup glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c transit_state glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c transit_state_mb glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_context_at dup ok
+@c NOT_SATISFY_NEXT_CONSTRAINT dup ok
+@c check_node_accept_bytes dup glocale, asmalloc, memleak
+@c re_string_cur_idx dup ok
+@c clean_state_log_if_needed glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_node_set_init_union dup asmalloc, memleak
+@c re_acquire_state_context dup asmalloc, memleak
+@c re_string_fetch_byte dup ok
+@c re_string_context_at dup ok
+@c build_trtable asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c group_nodes_into_DFAstates asmalloc, memleak
+@c bitset_empty dup ok
+@c bitset_set dup ok
+@c bitset_merge dup ok
+@c bitset_set_all ok
+@c bitset_clear ok
+@c bitset_contain dup ok
+@c bitset_copy ok
+@c re_node_set_init_copy dup asmalloc, memleak
+@c re_node_set_insert dup asmalloc, memleak
+@c re_node_set_init_1 dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_node_set_alloc dup asmalloc, memleak
+@c malloc dup asmalloc, memleak
+@c free dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c bitset_empty ok
+@c re_node_set_empty dup ok
+@c re_node_set_merge dup asmalloc, memleak
+@c re_acquire_state_context dup asmalloc, memleak
+@c bitset_merge ok
+@c calloc dup asmalloc, memleak
+@c bitset_contain dup ok
+@c merge_state_with_log glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c re_string_cur_idx dup ok
+@c re_node_set_init_union dup asmalloc, memleak
+@c re_string_context_at dup ok
+@c re_node_set_free dup asmalloc, memleak
+@c check_subexp_matching_top asmalloc, memleak
+@c match_ctx_add_subtop dup asmalloc, memleak
+@c transit_state_bkref dup glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c find_recover_state
+@c re_string_cur_idx dup ok
+@c re_string_skip_bytes dup ok
+@c merge_state_with_log dup glocale, asynconsist, asmalloc, selfdeadlock, shlimb, incansist, lockleak, memleak, fdleak
+@c check_halt_state_context dup ok
+@c prune_impossible_nodes glocale, asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c sift_ctx_init ok
+@c re_node_set_init_empty dup ok
+@c sift_states_backward glocale, asmalloc, memleak
+@c re_node_set_init_1 dup asmalloc, memleak
+@c update_cur_sifted_state glocale, asmalloc, memleak
+@c add_epsilon_src_nodes asmalloc, memleak
+@c re_acquire_state dup asmalloc, memleak
+@c re_node_set_alloc dup asmalloc, memleak
+@c re_node_set_merge dup asmalloc, memleak
+@c re_node_set_add_intersect asmalloc, memleak
+@c (re_)realloc dup asmalloc, memleak
+@c check_subexp_limits asmalloc, memleak
+@c sub_epsilon_src_nodes asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c re_node_set_contains dup ok
+@c re_node_set_add_intersect dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_node_set_remove_at dup ok
+@c re_node_set_contains dup ok
+@c re_acquire_state dup asmalloc, memleak
+@c sift_states_bkref glocale, asmalloc, memleak
+@c search_cur_bkref_entry dup ok
+@c check_dst_limits ok
+@c search_cur_bkref_entry dup ok
+@c check_dst_limits_calc_pos ok
+@c check_dst_limits_calc_pos_1 ok
+@c re_node_set_init_copy dup asmalloc, memleak
+@c re_node_set_insert dup asmalloc, memleak
+@c sift_states_backward dup glocale, asmalloc, memleak
+@c merge_state_array dup asmalloc, memleak
+@c re_node_set_remove ok
+@c re_node_set_contains dup ok
+@c re_node_set_remove_at dup ok
+@c re_node_set_free dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c re_node_set_empty dup ok
+@c build_sifted_states glocale, asmalloc, memleak
+@c sift_states_iter_mb glocale, asmalloc, memleak
+@c check_node_accept_bytes dup glocale, asmalloc, memleak
+@c check_node_accept dup ok
+@c check_dst_limits dup ok
+@c re_node_set_insert dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c check_halt_state_context dup ok
+@c merge_state_array asmalloc, memleak
+@c re_node_set_init_union dup asmalloc, memleak
+@c re_acquire_state dup asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c set_regs asmalloc, memleak
+@c (re_)malloc dup asmalloc, memleak
+@c re_node_set_init_empty dup ok
+@c free_fail_stack_return asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c update_regs ok
+@c re_node_set_free dup asmalloc, memleak
+@c pop_fail_stack asmalloc, memleak
+@c re_node_set_free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c match_ctx_free asmalloc, memleak
+@c match_ctx_clean asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c (re_)free dup asmalloc, memleak
+@c re_string_destruct dup asmalloc, memleak
+@c libc_lock_unlock lockleak
This function tries to match the compiled regular expression
@code{*@var{compiled}} against @var{string}.
@@ -1047,6 +1533,9 @@ free the storage it uses by calling @code{regfree}.
@comment regex.h
@comment POSIX.2
@deftypefun void regfree (regex_t *@var{compiled})
+@safety{@mtsafe{}@asunsafe{asmalloc}@acunsafe{memleak}}
+@c (re_)free dup asmalloc, memleak
+@c free_dfa_content dup asmalloc, memleak
Calling @code{regfree} frees all the storage that @code{*@var{compiled}}
points to. This includes various internal fields of the @code{regex_t}
structure that aren't documented in this manual.