aboutsummaryrefslogtreecommitdiff
path: root/posix/regexec.c
AgeCommit message (Collapse)Author
2004-03-10Update.Ulrich Drepper
2004-03-10 Richard Henderson <rth@redhat.com> * sysdeps/generic/errno.c: Disable versioning for rtld. * sysdeps/generic/Makefile (elf/shared): Add unwind-pe. * sysdeps/generic/unwind-pe.c: New file. * sysdeps/generic/unwind-pe.h: Only prototypes for _LIBC without _LIBC_DEFINITIONS. * posix/regexec.c: Likewise.
2004-03-10[BZ #16]Ulrich Drepper
Update. 2004-03-09 Ulrich Drepper <drepper@redhat.com> * stdlib/qsort.c (_quicksort): Initialize first stack element [BZ #16]. 2004-03-05 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (regexec): Return with error on unknown eflags. Replace weak_alias with versioned_symbol. (__compat_regexec): New. * posix/Versions (libc): Add regexec@GLIBC_2.3.4.
2004-03-05Update.Ulrich Drepper
* include/wctype.h: Add libc_hidden_proto for __towctrans. * wctype/towctrans.c: Add libc_hidden_def. * libio/memstream.c (open_memstream): Use _IO_init with INTUSE. * posix/regexec.c (transit_state): Remove unused variable next_state. * posix/regcomp.c (init_dfa): Use __btowc instead of btowc.
2004-03-04Update.Ulrich Drepper
2004-01-15 Paolo Bonzini <bonzini@gnu.org> * posix/regex.h (REG_STARTEND): Define. * posix/regexec.c (regexec): Check for REG_STARTEND.
2004-03-04Update.Ulrich Drepper
2004-02-29 Paolo Bonzini <bonzini@gnu.org> * posix/regexec.c (transit_state): Don't handle state == NULL. Move state log and backreference management... (merge_state_with_log): ... to this function. (find_recover_state): New function. (check_matching): Use find_recover_state to get a non-NULL state when an invalid state is reached. Compute the amount of initial characters to be skipped less conservatively when multi-byte character sets are in use. Do not check dfa->nbackref if the state log is NULL. Initialize err. (acquire_init_state_context): Expect err to be initialized. Fix spacing. 2004-03-05 Jakub Jelinek <jakub@redhat.com> * sysdeps/sparc/sparc32/elf/start.S: Handle PIEs. * sysdeps/sparc/sparc64/elf/start.S: Likewise.
2004-02-16[BZ #6]Ulrich Drepper
Update. * posix/regexec.c (transit_state): Fix typo in commented-out code [BZ #6].
2004-02-11Update.Ulrich Drepper
2004-02-11 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (check_node_accept_bytes): Return 0 if char_len is 0. (find_collation_sequence_value): Don't look beyond end of SYMB_EXTRAMB table. * posix/Makefile (tests): Add bug-regex23. (bug-regex23-ENV): New. * posix/bug-regex23.c: New file. * include/rpc/rpc.h: Declare thread variables with their correct type.
2004-02-02#Update.Ulrich Drepper
2004-02-02 Paolo Bonzini <bonzini@gnu.org> * posix/regexec.c (check_matching): Add P_MATCH_FIRST parameter. (re_search_internal): Pass new parameter to check_matching. (check_matching): Unless a parenthesized group is found at the beginning of the regexp, advance P_MATCH_FIRST until we entered a state different from the initial state.
2004-01-19Update.Ulrich Drepper
2004-01-19 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (get_subexp): Remove bkref_str variable. Extend buffers if needed before comparisons. (get_subexp_sub): Handle clean_state_log_if_needed failure.
2004-01-03(match_ctx_free_subtops, search_cur_bkref_entry, match_ctx_add_sublast, ↵Ulrich Drepper
sift_ctx_init, acquire_init_state_context, prune_impossible_nodes, check_halt_state_context, proceed_next_node, sift_states_backward, update_cur_sifted_state, check_dst_limits, check_dst_limits_calc_pos, sift_states_bkref, transit_state, check_subexp_matching_top, transit_state_sb, transit_state_mb, transit_state_bkref, get_subexp, get_subexp_sub, check_arrival, check_arrival_add_next_nodes, expand_bkref_cache, check_node_accept): Remove dfa parameter. Get dfa from mctxt. Adjust callers. (re_search_internal): Initialize mctxt.dfa.
2004-01-02Update.Ulrich Drepper
2004-01-02 Jakub Jelinek <jakub@redhat.com> * posix/regex_internal.c (re_node_set_insert): Remove unused variables. * posix/regex_internal.h (re_dfa_t): Add syntax field. * posix/regcomp.c (parse): Initialize dfa->syntax. * posix/regexec.c (acquire_init_state_context, prune_impossible_nodes, check_matching, check_halt_state_context, proceed_next_node, sift_states_iter_mb, sift_states_backward, update_cur_sifted_state, sift_states_bkref, transit_state, transit_state_sb, transit_state_mb, transit_state_bkref, get_subexp, get_subexp_sub, check_arrival, expand_bkref_cache, build_trtable): Remove preg argument, add dfa argument instead and remove dfa = preg->buffer initialization in the body. Adjust all callers. (check_node_accept_bytes, group_nodes_into_DFAstates, check_node_accept): Likewise. Use dfa->syntax instead of preg->syntax. (check_arrival_add_next_nodes): Remove preg argument. * posix/regex_internal.h (re_match_context_t): Make input re_string_t instead of a pointer to it. * posix/regex_internal.c (re_string_construct_common): Don't clear pstr here... (re_string_construct): ... but only here. * posix/regexec.c (match_ctx_init): Remove input argument. Don't initialize fields to zero. (re_search_internal): Move input into mctx.input. (acquire_init_state_context, check_matching, check_halt_state_context, proceed_next_node, clean_state_log_if_needed, sift_states_bkref, sift_states_iter_mb, transit_state, transit_state_sb, transit_state_mb, transit_state_bkref, get_subexp, check_arrival, check_arrival_add_next_nodes, check_node_accept, extend_buffers): Change mctx->input into &mctx->input and mctx->input->field into mctx->input.field. 2004-01-02 Jakub Jelinek <jakub@redhat.com> Paolo Bonzini <bonzini@gnu.org> * posix/regex_internal.h (re_const_bitset_ptr_t): New type. (re_string_t): Add newline_anchor, word_char and word_ops_used fields. (re_dfa_t): Change word_char type to bitset. Add word_ops_used field. (re_string_context_at, re_string_reconstruct): Remove last argument. * posix/regex_internal.c (re_string_allocate): Initialize pstr->word_char and pstr->word_ops_used. (re_string_context_at): Remove newline_anchor argument. Use input->newline_anchor instead, swap && conditions. Only use IS_WIDE_WORD_CHAR if input->word_ops_used != 0. Use input->word_char bitmap instead of IS_WORD_CHAR. (re_string_reconstruct): Likewise. Adjust re_string_context_at caller. * posix/regexec.c (acquire_init_state_context, check_halt_state_context, transit_state, transit_state_sb, transit_state_mb, transit_state_bkref, check_arrival, check_node_accept): Adjust re_string_context_at and re_string_reconstruct callers. (re_search_internal): Likewise. Set input.newline_anchor. (build_trtable): Use dfa->word_char bitmap instead of IS_WORD_CHAR. * posix/regcomp.c (init_word_char): Change return type to void. Set dfa->word_ops_used. (free_dfa_content): Don't free dfa->word_char. (parse_expression): Remove error handling for init_word_char.
2003-12-30Update.Ulrich Drepper
* posix/regexec.c (get_subexp): Only set bkref_str after the first loop, use buf + bkref_str_off in the loop instead. * posix/bug-regex11.c (tests): Add 3 new tests. * posix/regexec.c (clean_state_log_if_need): Rename to... (clean_state_log_if_needed): ...this. (transit_state_mb, get_subexp_sub): Adjust callers.
2003-12-29Update.Ulrich Drepper
2003-12-29 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (re_copy_regs): Revert comment change. Avoid memory leak if realloc fails. (proceed_next_node): Return -2 if re_node_set_insert fails. Return -2 if push_fail_stack fails. (push_fail_stack): Change fs->alloc only after successful realloc. (pop_fail_stack): Formatting. (set_regs): If proceed_next_node returns -2, free eps_via_nodes and fs. (check_arrival_add_next_nodes): Merge identical statements from if branches. * signal/Makefile (tests): Add tst-raise. * signal/tst-raise.c: New test.
2003-12-29Update.Ulrich Drepper
* posix/regcomp.c (mark_opt_subexp_iter): Declare IDX as int. * posix/regexec.c (re_copy_regs): Fix testing for failed allocation. _IO_peekc_unlocked, _IO_putc_unlocked, _IO_getwc_unlocked, and
2003-12-28Update.Ulrich Drepper
* posix/regexec.c (re_copy_regs): Allocate start and end array in one block. (push_fail_stack): Add missing check for failed memory allocation. _IO_peekc_unlocked, _IO_ptc_unlocked, _IO_getwc_unlocked, and overflow for 0 as argument. Raise Invalid exception for negative args.
2003-12-27Update.Ulrich Drepper
2003-12-23 Paolo Bonzini <bonzini@gnu.org> * posix/regex_internal.c (re_dfa_add_node): Initialize opt_subexp. * posix/regex_internal.h (re_token_type_t): Put OP_DUP_PLUS among the tokens, rather than among the epsilon-transiting nodes. (re_token_t): Add the opt_subexp flag. * posix/regcomp.c (optimize_utf8, calc_first, calc_next, calc_epsdest): Don't consider OP_DUP_PLUS. (mark_opt_subexp, mark_opt_subexp_iter): New functions. (parse_dup_op): Mostly rewritten, lowering OP_DUP_PLUS to OP_DUP_ASTERISK and marking optional subexpressions as such using mark_opt_subexp. * posix/regexec.c (set_regs): Initialize PREV_INDEX_MATCH and pass it to update_regs. (update_regs): Use the PREV_INDEX_MATCH parameter, together with the opt_subexp flag, in order to discard a final empty match of a repeated subexpression. * posix/BOOST.tests: Adjust test vectors. * posix/PCRE.tests: Likewise. * posix/rxspencer/tests: Likewise. 2003-12-17 Paolo Bonzini <bonzini@gnu.org> 2003-12-16 Paolo Bonzini <bonzini@gnu.org> 2003-12-17 Paolo Bonzini <bonzini@gnu.org> 2003-12-16 Jakub Jelinek <jakub@redhat.com> 2003-04-06 Kaz Kojima <kkojima@rr.iij4u.or.jp> 2003-02-20 Paolo Bonzini <bonzini@gnu.org> 2003-01-12 Franz Sirl <Franz.Sirl-kernel@lauterbach.com> 2003-01-09 Richard Henderson <rth@redhat.com> 2003-01-09 Richard Henderson <rth@redhat.com> 2003-01-03 Paul Eggert <eggert@twinsun.com>
2003-12-23(build_trtable): Don't allocate the trtable until state->word_trtable is ↵Ulrich Drepper
known. Don't hardcode UINT_BITS iterations on each bitset item. (match_ctx_init, match_ctx_clean, match_ctx_free, match_ctx_free_subtops, match_ctx_add_entry, search_cur_bkref_entry, match_ctx_clear_flag, match_ctx_add_subtop, match_ctx_add_sublast, sift_ctx_init, re_search_internal, re_search_2_stub, re_search_stub, re_copy_regs, acquire_init_state_context, prune_impossible_nodes, check_matching, check_halt_node_context, check_halt_state_context update_regs, proceed_next_node, push_fail_stack, pop_fail_stack, set_regs, free_fail_stack_return, sift_states_iter_mb, sift_states_backward update_cur_sifted_state, add_epsilon_src_nodes, sub_epsilon_src_nodes, check_dst_limits, check_dst_limits_calc_pos, check_subexp_limits, sift_states_bkref, clean_state_log_if_need, merge_state_array, transit_state, check_subexp_matching_top, transit_state_sb, transit_state_mb, transit_state_bkref, get_subexp, get_subexp_sub, find_subexp_node, check_arrival, check_arrival_add_next_nodes, find_collation_sequence_value, check_arrival_expand_ecl, check_arrival_expand_ecl_sub, expand_bkref_cache, build_trtable, check_node_accept_bytes, extend_buffers, group_nodes_into_DFAstates, check_node_accept): Likewise.
2003-12-22Update.Ulrich Drepper
2003-12-21 Jakub Jelinek <jakub@redhat.com> * posix/regcomp.c (duplicate_node, duplicate_node_closure): Revert 2003-11-24 changes. * posix/regexec.c (group_nodes_into_DFAstates): For CHARACTER with NEXT_{,NOT}WORD_CONSTRAINT check word_char bit. * posix/bug-regex19.c (tests): Add new tests. * posix/regexec.c (check_dst_limits_calc_pos): Fix formatting. * posix/regcomp.c (parse_dup_op): Return NULL if dup_elem is NULL, after checking syntax. Optimize. (calc_first): Fix comment. * posix/bug-regex13.c (tests): Add new tests.
2003-12-17(re_search_internal): Limit search to the beginning of the buffer if the ↵Ulrich Drepper
initial states are empty for contexts that do not include CONTEXT_BEGBUF or, if !preg->newline_anchor, that do not include any one of CONTEXT_BEGBUF and CONTEXT_NEWLINE.
2003-12-16Update.Ulrich Drepper
2002-12-16 Jakub Jelinek <jakub@redhat.com> Paolo Bonzini <bonzini@gnu.org> * posix/regexec.c (group_nodes_into_DFAstates): Never produce dests_ch items that are empty.
2003-12-16Update.Ulrich Drepper
* posix/regexec.c (check_arrival): Remove duplicate test. 2003-12-15 Ulrich Drepper <drepper@redhat.com> * posix/regcomp.c: Make !RE_ENABLE_I18N work again. * posix/regex_internal.c: Likewise. * posix/regexec.c: Likewise. Patch by Paolo Bonzini. 2003-12-14 Paolo Bonzini <bonzini@gnu.org>
2003-12-14(find_subexp_node, check_arrival, check_arrival_add_next_nodes, ↵Ulrich Drepper
check_arrival_expand_ecl, check_arrival_expand_ecl_sub, expand_bkref_cache): Rename the FL_OPEN parameter to TYPE, which is either OP_OPEN_SUBEXP or OP_CLOSE_SUBEXP. Callers adjusted.
2003-11-29Update.Ulrich Drepper
2003-11-28 Ulrich Drepper <drepper@redhat.com> * sysdeps/x86_64/fpu/libm-test-ulps: Add some more minor changes to compensate other setup. 2003-11-27 Andreas Jaeger <aj@suse.de> * sysdeps/x86_64/fpu/libm-test-ulps: Add ulps for new atan2 test. * math/libm-test.inc (atan2_test): Add test that run infinitly. Reported by "Willus" <etc231etc231@willus.com>. 2003-11-27 Michael Matz <matz@suse.de> * sysdeps/ieee754/dbl-64/mpsqrt.c (fastiroot): Fix 64-bit problem with wrong types. 2003-11-28 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (acquire_init_state_context): Make inline. Add always_inline attribute. (check_matching): Add BE macro. Move if (cur_state->has_backref) into if (dfa->nbackref). (sift_states_backward): Fix comment. (transit_state): Add BE macro. Move if (next_state->has_backref) into if (dfa->nbackref && next_state). Don't check for next_state != NULL twice. * posix/regcomp.c (peek_token): Use opr.ctx_type instead of opr.idx for ANCHOR. (parse_expression): Only call init_word_char if word context will be needed. * posix/bug-regex11.c (tests): Add new tests. * posix/tst-regex.c: Include getopt.h. (timing): New variable. (main): Set timing to 1 if --timing argument is present. Add 2 new tests. (run_test, run_test_backwards): Handle timing. 2003-11-27 Jakub Jelinek <jakub@redhat.com> * posix/regex_internal.h (re_string_t): Remove mbs_case field. Add offsets, valid_raw_len, raw_len, raw_stop, mbs_allocated and offsets_needed fields. Change icase, is_utf8 and map_notascii type from int bitfield to unsigned char. (MBS_ALLOCATED, MBS_CASE_ALLOCATED): Remove. (build_wcs_upper_buffer): Change prototype to return int. (re_string_peek_byte_case, re_string_fetch_byte_case): Remove defines, add prototypes. * posix/regex_internal.c (re_string_allocate): Don't initialize stop here. Don't initialize mbs_case. Set valid_raw_len. Use mbs_allocated instead of MBS_* macros. (re_string_construct): Don't initialize stop and valid_len here. Don't initialize mbs_case. Use mbs_allocated instead of MBS_* macros. Reallocate buffers if build_wcs_upper_buffer converted too few bytes. Set valid_len to bufs_len only for single byte no translation and set in that case valid_raw_len as well. (re_string_realloc_buffers): Reallocate offsets if not NULL. Use mbs_allocated instead of MBS_ALLOCATED. Don't reallocate mbs_case. (re_string_construct_common): Initialize raw_len, mbs_allocated, stop and raw_stop. (build_wcs_buffer): Apply pstr->trans before mbrtowc instead of after it. Set valid_raw_len. Don't set mbs_case. (build_wcs_upper_buffer): Return REG_NOERROR or REG_ESPACE. Only use the fast path if !pstr->offsets_needed. Apply pstr->trans before mbrtowc instead of after it. If upper case character uses different number of bytes than lower case, goto to the slow path. Don't call towupper unnecessarily twice. Set valid_raw_len as well. Handle in the slow path the case if lower and upper case use different number of characters. Don't set mbs_case. (re_string_skip_chars): Use valid_raw_len instead of valid_len. (build_upper_buffer): Don't set mbs_case. Add BE macro. Set valid_raw_len. (re_string_translate_buffer): Set mbs instead of mbs_case. Set valid_raw_len. (re_string_reconstruct): Use raw_len/raw_stop to initialize len/stop. Clear valid_raw_len and offsets_needed when clearing valid_len. Use mbs_allocated instead of MBS_* macros. Check original offset against valid_raw_len instead of valid_len. Remove mbs_case handling. Adjust valid_raw_len together with valid_len. If is_utf8 and looking for tip context, apply pstr->trans first. If buffers start with partial multi-byte character, initialize mbs array as well if mbs_allocated. Check return value of build_wcs_upper_buffer. (re_string_peek_byte_case): New function. (re_string_fetch_byte_case): New function. (re_string_destruct): Use mbs_allocated instead of MBS_ALLOCATED. Don't free mbs_case. Free offsets. * posix/regcomp.c (init_dfa): Only check if charset name is UTF-8 if mb_cur_max == 6. * posix/regexec.c (re_search_internal): Initialize input.raw_stop as well. Use valid_raw_len instead of valid_len when looking through fastmap. Adjust registers through input.offsets. (extend_buffers): Allow build_wcs_upper_buffer to fail. * posix/bug-regex18.c (tests): Enable #ifdefed out tests. Add new tests.
2003-11-27Update.Ulrich Drepper
2003-11-26 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (check_subexp_limits): Only check close subexpression limitation if one is found. Formatting. (sift_states_backward, check_arrival, check_arrival_add_next_nodes): Formatting. * posix/bug-regex11.c (tests): Enable most #ifdefed out tests. Add new test.
2003-11-26Update.Ulrich Drepper
2003-11-25 Ulrich Drepper <drepper@redhat.com> * posix/runptests.c (main): Make errors fatal. * posix/PTESTS: One test in GA135 and GA136 check functionality which seems not guaranteed. 2003-11-25 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (re_search_internal): If prune_impossible_nodes returned REG_NOMATCH, set match_last to -1. Don't initialize pmatch[0] needlessly. Fix comment. (prune_impossible_nodes): Don't segfault on NULL state_log entry. (set_regs): Fix comment. * posix/regcomp.c (parse_bracket_exp): Only set has_plural_match if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. (build_charclass_op): Set has_plural_match if adding both SIMPLE_BRACKET and COMPLEX_BRACKET. * posix/bug-regex11.c (tests): Fix register values for one commented out test. Add new tests. * posix/regex_internal.c (re_string_allocate): Make sure init_len is at least dfa->mb_cur_max. (re_string_reconstruct): If is_utf8, don't fall back into re_string_skip_chars just because idx points into a middle of valid UTF-8 character. Instead, set the wcs bytes which correspond to the partial character bytes to WEOF. * posix/regexec.c (re_search_internal): Allocate input.bufs_len + 1 instead of dfa->nodes_len + 1 state_log entries initially. * posix/bug-regex20.c (main): Uncomment backwards case insensitive tests.
2003-11-24Update.Ulrich Drepper
2003-11-24 Jakub Jelinek <jakub@redhat.com> * posix/regex_internal.h (re_token_t): Add word_char bit. Add comment. (re_dfa_t): Add sb_char field. (bitset_mask): New function. * posix/regcomp.c (free_dfa_content): Free sb_char. (init_dfa): Don't initialize word_char unnecessarily. Initialize sb_char. (duplicate_node): Don't duplicate !word_char CHARACTERs with NEXT_WORD_CONSTRAINT constraint or word_char CHARACTERs with NEXT_NOTWORD_CONSTRAINT. Return -1 in *new_idx instead. (duplicate_node_closure): Handle clone_dest == -1 from duplicate_node. (peek_token): Initialize word_char bit. (parse_expression, parse_dup_op): Add comments. (parse_bracket_exp): Don't set bitmask bits for multi-byte char starting bytes here at the beginning. Mask off the bits right before creating SIMPLE_BRACKET. (build_charclass_op): Likewise. * posix/regexec.c (group_nodes_into_DFAstates) <case OP_PERIOD>: Only set accept bits for single-byte characters. (group_nodes_into_DFAstates): Don't rely on characters 0 .. 127 being single byte encoded and the rest multi-byte. * posix/bug-regex19.c (tests): Add new tests. (do_mb_tests): Initialize t to *test. (main): Fail even on do_mb_tests errors.
2003-11-23Update.Ulrich Drepper
* posix/regexec.c: Correct several memory allocation problems. Add more BE. * posix/regex_internal.c: Likewise. * posix/regcomp.c: Likewise.
2003-11-23Update.Ulrich Drepper
2003-11-23 Ulrich Drepper <drepper@redhat.com> * posix/regexec.c: Add const in a number of places. * posix/regex_internal.h: Make EPSILON_BIT a macro to help debugging. Its value isn't important.
2003-11-20Update.Ulrich Drepper
2003-11-20 Ulrich Drepper <drepper@redhat.com> * posix/PTESTS: Fix first test in GA143. 2003-11-20 Jakub Jelinek <jakub@redhat.com> * posix/regex_internal.h (re_dfastate_t): Remove trtable_search. Add word_trtable. * posix/regex_internal.c (create_newstate_common, free_state): Don't free trtable_search. * posix/regexec.c (check_matching): Remove fl_search argument. (transit_state_sb): Likewise. #ifdef out as unused. (build_trtable): Remove fl_search argument. Set state->word_trtable and state->trtable. Build separate word and non-word tables if multi-byte and they differ for some character. (transit_state): Remove fl_search argument. Don't update state->trtable here. Handle state->word_trtable. #ifdef out unused call to transit_state_sb. (re_search_internal): Update check_matching caller. (group_nodes_into_DFAstates): Don't clear non-ascii chars in accepts bitmask for multi-byte locales. * posix/bug-regex19.c (tests): Enable some commented out tests, add 2 new tests. * posix/tst-rxspencer.c (mb_tests): Don't test [[=b=]] for now as multi-byte. Don't run identical multi-byte tests multiple times unnecessarily. (main): Check setlocale return value. * posix/Makefile (tst-rxspencer-ARGS): Add --utf8 argument. (tst-rxspencer-ENV): Remove MALLOC_TRACE, add LOCPATH. ($(objpfx)tst-rxspencer-mem): Run another tst-rxspencer test here, without --utf8 argument but with MALLOC_TRACE.
2003-11-19Update.Ulrich Drepper
2003-11-19 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (extend_buffers): Don't allocate twice as big state_log as needed. Don't modify pstr->valid_len for mb_cur_max == 1 !icase !trans. * posix/regcomp.c (free_bin_tree): Removed. (create_tree): Add dfa argument. Don't call re_malloc for each tree, instead allocate from str_tree_storage. (re_dfa_add_tree_node): New function. (free_dfa_content): Handle freeing if dfa->nodes == NULL or dfa->state_table == NULL. (re_compile_internal): Call free_dfa_content if init_dfa fails. Call free_workarea_compile, re_string_destruct and free_dfa_content for most of the other failure paths. (init_dfa): Initialize str_tree_storage_idx. Don't clear any fields on allocation failure. (free_workarea_compile): Free str_tree_storage chunks instead of free_bin_tree (dfa->str_tree). (parse): Call re_dfa_add_tree_node instead of re_dfa_add_node followed by create_tree. Add dfa argument to remaining create_tree calls. Remove new_idx variable. Remove calls to free_bin_tree. (parse_reg_exp, parse_branch, parse_expression, parse_sub_exp, parse_dup_op, parse_bracket_exp, build_charclass_op): Likewise. (duplicate_tree): Remove calls to free_bin_tree, add dfa argument to create_tree. * posix/regex_internal.h (BIN_TREE_STORAGE_SIZE): Define. (bin_tree_storage_t): New type. (re_dfa_t): Add str_tree_storage and str_tree_storage_idx fields. * posix/Makefile (tests): Add bug-regex21. (generated): Add bug-regex21-mem, bug-regex21.mtrace, tst-rxspencer-mem and tst-rxspencer.mtrace. (tests): Depend on $(objpfx)bug-regex21-mem and $(objpfx)tst-rxspencer-mem. (bug-regex21-ENV, tst-rxspencer-ENV): Set. ($(objpfx)bug-regex21-mem, $(objpfx)tst-rxspencer-mem): New. * posix/tst-rxspencer.c (main): Add call to mtrace. Free line at the end. * posix/bug-regex21.c: New test. * posix/regexec.c (get_subexp): After calling get_subexp_sub
2003-11-19Update.Ulrich Drepper
2003-11-18 Ulrich Drepper <drepper@redhat.com> * posix/regexec.c (get_subexp): Adter calling get_subexp_seb reload buf and bkref_str. Little optimization by avoiding memcmp. 2003-11-14 David Mosberger <davidm@hpl.hp.com>
2003-11-18Update.Ulrich Drepper
* posix/regex_internal.h (re_token_type_t): Remove unused ALT, END_OF_RE_TOKEN_T and SUBEXP. Reorder values. Add OP_UTF8_PERIOD and EPSILON_BIT. (IS_EPSILON_NODE): Just test if EPSILON_BIT is set. (ACCEPT_MB_NODE): Return 1 for OP_UTF8_PERIOD as well. * posix/regex_internal.c (create_ci_newstate, create_cd_newstate): Handle OP_UTF8_PERIOD. (re_string_reconstruct): Set valid_len for single byte char searching with no translation and case sensitivity. * posix/regcomp.c (re_compile_fastmap_iter, calc_first): Handle OP_UTF8_PERIOD. (re_compile_internal): Don't call optimize_utf8 if preg->translate != NULL. (optimize_utf8): Remove BACK_SLASH case. Transform OP_PERIOD into OP_UTF8_PERIOD if the searching can be optimized. (parse_bracket_exp): Don't create SIMPLE_BRACKET if it doesn't have any bits set and COMPLEX_BRACKET is used. * posix/regexec.c (transit_state_mb): Fix comment typo. (group_nodes_into_DFAstates, check_node_accept): Handle OP_UTF8_PERIOD. (check_node_accept_bytes): Likewise. Reorder slightly so that re_string_char_size_at and re_string_elem_size_at are called only when needed. * posix/bug-regex20.c (BRE, ERE): Define. (tests): Use them to make lines shorter. Expect . to be optimized. Add lots of new tests. (main): Run (ATM just case sensitive) test with backwards searching as well. 2003-11-18 Jakub Jelinek <jakub@redhat.com>
2003-11-18Update.Ulrich Drepper
2003-11-17 Jakub Jelinek <jakub@redhat.com> * posix/regcomp.c (optimize_utf8): Optimize multi-byte chars as well. * posix/bug-regex20.c (tests): Add new tests. Multi-byte char followed by dup operator is expected to be optimized. * posix/regexec.c (check_node_accept_bytes): Move nrules and j variables to the block where they are only used, initialize nrules only immediately before using it. 2003-11-15 Andreas Jaeger <aj@suse.de> * sysdeps/x86_64/fpu/s_scalbnl.S: New file. * sysdeps/x86_64/fpu/s_truncl.S: New file. * sysdeps/x86_64/fpu/s_nearbyintl.S: New file. * sysdeps/x86_64/fpu/s_floorl.S: New file. * sysdeps/x86_64/fpu/s_ilogbl.S: New file. * sysdeps/x86_64/fpu/e_remainderl.S: New file. * math/libm-test.inc (floor_test): Test also ±0.25. (ceil_test): Test -0.25.
2003-11-16Update.Ulrich Drepper
* posix/regex_internal.h: Add forward declaration of re_dfa_t. Replace last two parameters of re_string_allocate and re_string_construct with pointer to DFA. (re_dfa_t): Add map_notascii field. * posix/regcomp.c (re_compile_internal): Add call of re_string_construct. (init_dfa): Initialize mpa_notascii. * posix/regex_internal.c: Adjust definitions of re_string_allocate and re_string_construct. Pass DFA to re_string_construct. Adjust definition. Initialize map_notascii field. (build_wcs_upper_buffer): If map_notascii is zero use simplfied method to map ASCII values to upper case. * posix/regex.c: Include localeinfo.h. * posix/regexec.c: Adjust call of re_string_allocate. * locale/langinfo.h: Add _NL_CTYPE_MAP_TO_NONASCII. * locale/localeinfo.h (LIMAGIC): Change value. * locale/categories.def. Add entry for _NL_CTYPE_MAP_TO_NONASCII. * locale/C-ctype.h: Likewise. * locale/programs/ld-ctype.c: Compute whether any mapping maps from ASCII to non-ASCII value. Write out that value.
2003-11-12Update.Ulrich Drepper
2003-11-12 Jakub Jelinek <jakub@redhat.com> * io/ftw.c (NFTW_NEW_NAME, NFTW_OLD_NAME): Add prototypes. 2003-11-12 Jakub Jelinek <jakub@redhat.com> * posix/tst-regex.c (umemlen): New variable. (test_expr): Add expectedicase argument. Test case insensitive searches as well as backwards searches (case sensitive and insensitive) too. (run_test): Add icase argument. Use it to compute regcomp flags. (run_test_backwards): New function. (main): Cast read to size_t to avoid warning. Set umemlen. Add expectedicase arguments to test_expr. * posix/regex_internal.c (re_string_reconstruct): If is_utf8, find previous character by walking back instead of converting all chars from beginning. 2003-11-12 Jakub Jelinek <jakub@redhat.com> * posix/regex_internal.h (struct re_string_t): Add is_utf8 and mb_cur_max fields. (struct re_dfa_t): Likewise. Reorder fields to make structure smaller on 64-bit arches. (re_string_allocate, re_string_construct): Add mb_cur_max and is_utf8 arguments. (re_string_char_size_at, re_string_wchar_at): Use pstr->mb_cur_max instead of MB_CUR_MAX. * posix/regcomp.c (re_compile_fastmap_iter): Use dfa->mb_cur_max instead of MB_CUR_MAX. (re_compile_internal): Pass new arguments to re_string_construct. (init_dfa): Initialize mb_cur_max and is_utf8 fields. (peek_token, peek_token_bracket): Use input->mb_cur_max instead of MB_CUR_MAX. (parse_expression, parse_bracket_exp, parse_charclass_op): Use dfa->mb_cur_max instead of MB_CUR_MAX. * posix/regex_internal.c (re_string_construct_common): Add mb_cur_max and is_utf8 arguments. Initialize fields with them. (re_string_allocate, re_string_construct): Add mb_cur_max and is_utf8 arguments, pass them to re_string_construct_common. Use mb_cur_max instead of MB_CUR_MAX. (re_string_realloc_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. (re_string_reconstruct): Likewise. (re_string_context_at): Use input->mb_cur_max instead of MB_CUR_MAX. (create_ci_newstate, create_cd_newstate): Use dfa->mb_cur_max instead of MB_CUR_MAX. * posix/regexec.c (re_search_internal): Likewise. Pass new arguments to re_string_allocate. (check_matching, transit_state_sb): Use dfa->mb_cur_max instead of MB_CUR_MAX. (extend_buffers): Use pstr->mb_cur_max instead of MB_CUR_MAX. 2003-11-12 Jakub Jelinek <jakub@redhat.com> * posix/Makefile (tests): Add bug-regex19. (bug-regex19-ENV): Add LOCPATH. * posix/bug-regex19.c: New test.
2003-10-06Update.Ulrich Drepper
* posix/bug-regex11.c: Add some more tests which fail so far. Disable them. Patch by Paolo Bonzini <bonzini@gnu.org>. 2003-10-05 Paolo Bonzini <bonzini@gnu.org> * posix/bug-regex11.c: Add more backreference-related test cases. (main): Show the failing regex in the error messages. * posix/regexec.c (check_dst_limits_calc_pos): Simplify some nested conditionals. Replace if's with a switch statement. (check_dst_limits_calc_pos <TYPE_BKREF>): Rename parameter NODE to FROM_NODE, it shadows a local variable; don't recurse if FROM_NODE does not change in the recursive invocation, fixing an infinite loop in the ()\1*\1* regex. (sift_states_backward): Fix function comment. * posix/regcomp.c (calc_epsdest): Add an assertion. 2003-10-06 Ulrich Drepper <drepper@redhat.com>
2003-09-23Upate.Ulrich Drepper
2003-09-20 Paolo Bonzini <bonzini@gnu.org> * posix/regcomp.c (peek_token): Don't look back for ( or | to check whether to treat a caret as special. It fails for the (extended) regex \(^. (parse, parse_reg_exp): Pass RE_CARET_ANCHORS_HERE to fetch_token. * posix/regex.h: Define RE_CARET_ANCHORS_HERE. * posix/regexec.c: Check out of bounds value before shifting. * posix/regex_internal.h: Define __attribute for non-gcc.
2003-06-13Update.Ulrich Drepper
2003-06-13 Ulrich Drepper <drepper@redhat.com> Fixing gcc 3.3 warnings, part II. * argp/argp-help.c (hol_entry_long_iterate): Always inline. * elf/dl-load.c (cache_rpath): Don't inline. * iconvdata/cns11642l2.h: Always inline all functions. * iconvdata/iso-ir-165.h: Likewise. * locale/Makefile (aux): Add coll-lookup. * locale/coll-lookup.c: New file. * locale/coll-lookup.h (collidx_table_lookup): Do not define here. (collseq_table_lookup): Likewise. * locale/weightwc.h: Adjust collidx_table_lookup calls for name change. * posix/fnmatch_loop.c: Adjust collseq_table_lookup calls for name change. * posix/regcomp.c: Likewise. * posix/regexec.c: Likewise. * locale/programs/3level.h (*_get): Always inline. * locale/programs/locfile.h: Move definition of handle_copy to... * locale/programs/locfile.c: ...here. * locale/programs/ld-collate.c (obstack_int32_grow): Always inline. (obstack_int32_grow_fast): Likewise. (utf8_encode): Likewise. (find_element): Avoid aliasing problems. (insert_value): Likewise. (collate_read): Likewise. * nss/getent.c (print_hosts): Don't inline (print_networks): Likewise. (print_shadow): Likewise. (build_doc): Likewise. * nss/nss_files/files-parse.c [ENTDATA] (parser_stclass): Don't inline. * posix/regcomp.c (re_set_fastmap): Always inline. (seek_collating_symbol_entry): Likewise. (lookup_collation_sequence_value): Likewise. (build_range_exp): Likewise. (build_collating_symbol): Likewise. * posix/regexec.c (acquire_init_state_context): Don't inline. (clean_state_log_if_need): Likewise. * resolv/res_send.c (eConsIovec): Rewrite to not return struct and adjust all callers. (evConsTime): Likewise. (evAddTime): Likewise. (evSubTime): Likewise. (evNowTime): Likewise. (evTimeSpec): Removed. (__libc_res_nsend): Avoid aliasing problem. * sysdeps/unix/sysv/linux/ifreq.h: Move old_siocgifconf definition to.. * sysdeps/unix/sysv/linux/ifreq.c: ...here. * sysdeps/unix/sysv/linux/i386/dl-procinfo.h (_dl_string_hwcap): Always inline. (_dl_string_platform): Likewise. * wctype/wchar-lookup.h (wctype_table_lookup): Always inline. (wcwidth_table_lookup): Likewise. (wctrans_table_lookup): Likewise. * sysdeps/unix/sysv/linux/sys/epoll.h: Include <stdint.h>.
2003-06-12Update.Ulrich Drepper
2003-06-12 H.J. Lu <hongjiu.lu@intel.com> * posix/transbug.c (run_test): Return 1 for failure. (do_test): Compare only if run_test is successful. 2003-06-12 Simon Josefsson <jas@extundo.com> * argp/argp.h [!__THROW]: Define if undefined. * posix/transbug.c: New file. * inet/Makefile (aux): Add check_pf. * include/ifaddrs.h: Add prototype for __check_pf. * sysdeps/generic/check_pf.c: New file. * sysdeps/unix/sysv/linux/check_pf.c: New file.
2003-03-01Update.glibc-2.3.2cvs/glibc-2_3_2Ulrich Drepper
* argp/argp.h: Fix a typo. Reported by H.S.Teoh <hsteoh@quickfur.ath.cx>. * manual/terminal.texi: Fix cfmakeraw() definition from int to void. 2003-02-27 Pat Rankin <rankin@pactechdata.com> * posix/regexec.c (proceed_next_node): Cast re_string_get_buffer to char *. (get_subexp): Likewise. 2003-03-01 GOTO Masanori <gotom@debian.or.jp>
2003-02-21Update.Ulrich Drepper
* inet/rcmd.c (rresvport_af): Avoid using invliad values. Wrap around in search if port IPPORT_RESERVED/2 has been test. 2002-02-20 Paolo Bonzini <bonzini@gnu.org> * posix/regcomp.c: Remove inclusions. * posix/regexec.c: Likewise. * posix/regex_internal.c: Likewise. * posix/regex_internal.h: Add inclusions here. * posix/regex.c: Only include sys/types.h before regex.h. Include regex_internal.h here. Include regex_internal.c before regcomp.c and regexec.c (might expose more opportunities to the C compiler). * posix/regcomp.c (parse_expression): Fix construct rejected by SGI CC. * posix/regex_internal.h [!_LIBC] (__mempcpy): Fix typo. [!_LIBC] (__wcrtomb): New definition. [!_LIBC]: Conditionalize enabling of I18N on HAVE_WCSCOLL and HAVE_LOCALE_H as well. 2003-02-20 Ulrich Drepper <drepper@redhat.com>
2002-11-27Update.Ulrich Drepper
2002-11-27 Isamu Hasegawa <isamu@yamato.ibm.com> * posix/regcomp.c (parse_expression): Set the bit since the back reference is used in the regular expression. * posix/regex_internal.c (re_node_set_init_1): Make it clean in case of malloc failure. (re_node_set_init_copy): Likewise. * posix/regex_internal.h (state_array_t): New structure. (re_sub_match_last_t): Likewise. (re_sub_match_top_t): Likewise. (re_match_context_t): Add new members. (re_dfa_t): Likewise. * posix/regexec.c (re_search_internal): Invoke prune_impossible_nodes to check the matching is really correct, and retry if failed. Move the routin pruning the impossible nodes from here, ... (prune_impossible_nodes): To this function. (check_matching): Invoke check_subexp_matching_top, and replace redundant checking with transit_state_bkref invocation. (proceed_next_node): Replace strncmp with memcmp. Reported by Paolo Bonzini <bonzini@gnu.org>. (update_cur_sifted_state): Remove search_subexp invocation. (search_subexp): Remove this function. (check_dst_limits_calc_pos): Use search_cur_bkref_entry for optimization. (sift_states_bkref): Use search_cur_bkref_entry for optimization. Remove unused invocation of match_ctx_add_entry. (transit_state): Invoke check_subexp_matching_top. (check_subexp_matching_top): New function. (transit_state_bkref): Remove unused array. Merge transit_state_bkref_loop. (transit_state_bkref_loop): Use get_subexp instead of sift_states_backward. Use search_cur_bkref_entry for optimization. Merge this function to transit_state_bkref. (get_subexp): New function. (get_subexp_sub): Likewise. (find_subexp_node): Likewise. (check_arrival): Likewise. (check_arrival_expand_ecl): Likewise. (check_arrival_expand_ecl_sub): Likewise. (expand_bkref_cache): Likewise. (match_ctx_init): Initialize new members. (match_ctx_clean): New function. (match_ctx_free): Release new members. (match_ctx_free_subtops): New function. (match_ctx_add_entry): Fix indent. (search_cur_bkref_entry): New function. (match_ctx_add_subtop): Likewise. (match_ctx_add_sublast): Likewise.
2002-11-06Update.Ulrich Drepper
2002-11-06 Ulrich Drepper <drepper@redhat.com> * posix/regcomp.c: Use tabs instead of spaces. * posix/regexec.c: Likewise. * posix/regex_internal.h: Likewise. * posix/regcomp.c (re_compile_fastmap_iter): Use __wcrtomb not wctomb.
2002-11-06Update.Ulrich Drepper
2002-11-06 Jakub Jelinek <jakub@redhat.com> * posix/regcomp.c (re_compile_pattern): Don't set regs_allocated here. (regcomp): Don't set can_be_null here. (re_comp): Clear whole re_comp_buf with the exception of fastmap. (re_compile_internal): Clear can_be_null, set regs_allocated. * posix/regcomp.c (re_set_fastmap): New function. (re_compile_fastmap_iter): Use it. Remove redundant type == COMPLEX_BRACKET check. * posix/regexec.c (re_search_internal): Optimize searching with fastmap. Call re_string_reconstruct even if match_first is smaller than raw_mbs_idx. 2002-11-06 Isamu Hasegawa <isamu@yamato.ibm.com> * posix/regcomp (free_dfa_content): Use free_state. * posix/regex_internal.c (re_string_realloc_buffers): Don't edit pointers in case that realloc failed. (re_node_set_merge): Likewise. (register_state): Likewise. (create_newstate_common): Invoke memory release functions in case of error conditions. (create_ci_newstate): Likewise. (create_cd_newstate): Likewise. (free_state): New function. * posix/regexec.c (re_search_internal): Invoke memory release functions in case of error conditions. (sift_states_backward): Likewise. (merge_state_array): Likewise. (add_epsilon_src_nodes): Likewise. (sub_epsilon_src_nodes): Likewise. (search_subexp): Likewise. (sift_states_bkref): Likewise. (transit_state_sb): Likewise. (transit_state_mb): Likewise. (transit_state_bkref_loop): Likewise. (group_nodes_into_DFAstates): Likewise. (push_fail_stack): Don't edit pointers in case that realloc failed. (extend_buffers): Likewise. (match_ctx_add_entry): Likewise.
2002-11-03* manual/filesys.texi (Reading/Closing Directory): Rewrite readdir_rRoland McGrath
description to be clearer and to say that *RESULT is set to ENTRY. 2002-10-30 Jakub Jelinek <jakub@redhat.com> * posix/regexec.c (build_trtable): Alloca or malloc dests_node and dests_ch arrays together. Alloca or malloc dest_states, dest_states_word and dest_states_nl arrays together. Free memory on error exit. 2002-10-29 Daniel Jacobowitz <drow@mvista.com> * crypt/crypt_util.c (__init_des_r): Initialize current_salt and current_saltbits. 2002-11-02 Roland McGrath <roland@redhat.com>
2002-10-17Update.Ulrich Drepper
2002-10-17 Isamu Hasegawa <isamu@yamato.ibm.com> * posix/bug-regex11.c: Add a test case for the bug reported by Paolo Bonzini <bonzini@gnu.org>. * posix/regexec.c (sift_states_bkref): Use correct destination of the back reference.
2002-10-12Update.Ulrich Drepper
2002-10-11 Isamu Hasegawa <isamu@yamato.ibm.com> * posix/regcomp.c (re_compile_fastmap_iter): Remove the handling OP_CONTEXT_NODE. (regfree): Likewise. (create_initial_state): Likewise. (analyze): Remove the substitutions which became useless. (calc_first): Likewise. (calc_epsdest): Use edests of OP_BACK_REF in case that it has epsilon destination. (duplicate_node_closure): New function. (duplicate_node): Remove the handling OP_CONTEXT_NODE. (calc_inveclosure): Likewise. (calc_eclosure): Likewise. (calc_eclosure_iter): Invoke duplicate_node_closure instead of direct invocation of duplicate_node. (parse): Don't use comma operator in the return to avoid compiler warning. (parse_reg_exp): Likewise. (parse_branch): Likewise. (parse_expression): Likewise. (parse_sub_exp): Likewise. (parse_dup_op): Likewise. * posix/regex_internal.c (re_dfa_add_node): Remove the substitutions which became useless. (create_ci_newstate): Remove the handling OP_CONTEXT_NODE. (create_cd_newstate): Likewise. * posix/regex_internal.h (re_token_type_t): Remove the obsolete type. (re_token_t): Likewise. (re_dfa_t): Likewise. (re_node_set_remove): New macro. * posix/regexec.c (check_matching): Remove the handling OP_CONTEXT_NODE. (check_halt_node_context): Likewise. (proceed_next_node): Likewise. (pop_fail_stack): Fix the memory leak. (set_regs): Likewise. (free_fail_stack_return): New function. (sift_states_backward): Fix the memory leak. Remove the handling OP_CONTEXT_NODE. (update_cur_sifted_state): Append some if clause to avoid redundant call. (sub_epsilon_src_nodes): Use IS_EPSILON_NODE since it might be a back reference. (check_dst_limits): Remove the handling OP_CONTEXT_NODE. (check_subexp_limits): Likewise. (search_subexp): Likewise. (sift_states_bkref): Likewise. (transit_state_mb): Likewise. (transit_state_bkref_loop): Likewise. (transit_state_bkref_loop): Likewise. (group_nodes_into_DFAstates): Likewise. (check_node_accept): Likewise. (sift_ctx_init): Add initializing. 2002-10-12 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/sysdep.h (INLINE_SYSCALL): Use __builtin_expect.
2002-10-01Update.Ulrich Drepper
2002-10-01 Isamu Hasegawa <isamu@yamato.ibm.com> * posix/regex_internal.c (re_string_reconstruct): Reset the member LEN and STOP. * posix/regexec.c (re_search_stub): Remove incorrect condition of "range < 0". Round RANGE in case that it is too small.
2002-09-30Update.Ulrich Drepper
2002-09-30 Isamu Hasegawa <isamu@yamato.ibm.com> * posix/regex_internal.h (re_match_context_t): Add a new member. (re_fail_stack_ent_t): New structure. (re_fail_stack_t): Likewise. * posix/regexec.c (re_search_internal): Use the new member of re_match_context_t. Use fail stack only if it has back references and there are plural matching candidates. (proceed_next_node): Use fail stack if it is indicated. (set_regs): Likewise. (push_fail_stack): New function. (pop_fail_stack): New function. (check_dst_limits): Likewise. (check_dst_limits_calc_pos): Likewise. (search_subexp): Check the limitations on the top of subexpressions. (sift_states_bkref): Check the limitations of the destination node. Reuse the array sctx->sifted_states. 2002-09-30 Ulrich Drepper <drepper@redhat.com> * stdio-common/printf_fp.c: Shuffle a few lines around to help the compiler optimizing. No semantical changes intended.
2002-09-30(sift_states_bkref): Remove ret variable. Use err instead.Ulrich Drepper