| Commit message (Collapse) | Author | Age | Files | Lines |
|
|
|
|
|
| |
Problem: The new regexp engine does not give an error for using a back
reference where it is not allowed. (Dominique Pelle)
Solution: Check the back reference like the old engine. (closes #1774)
|
|
|
|
|
|
|
|
| |
Problem: When 'hlsearch' is set and matching with the last search pattern
is very slow, Vim becomes unusable. Cannot quit search by
pressing CTRL-C.
Solution: When the search times out set a flag and don't try again. Check
for timeout and CTRL-C in NFA loop that adds states.
|
|
|
|
|
| |
Problem: The message "Invalid range" is used for multiple errors.
Solution: Add two more specific error messages. (Itchyny, Ken Hamada)
|
|
|
|
|
| |
Problem: NFA regex engine handles [0-z] incorrectly.
Solution: Return at the right point. (James McCoy, closes #1703)
|
|
|
|
|
|
|
| |
Problem: Using a function pointer instead of the actual function, which we
know.
Solution: Change mb_ functions to utf_ functions when already checked for
Unicode. (Dominique Pelle, closes #1582)
|
|
|
|
|
|
|
|
|
| |
Problem: Character classes are not well tested. They can differ between
platforms.
Solution: Add tests. In the documentation make clear which classes depend
on what library function. Only use :cntrl: and :graph: for ASCII.
(Kazunobu Kuriyama, Dominique Pelle, closes #1560)
Update the documentation.
|
|
|
|
|
| |
Problem: Some macros are in lower case.
Solution: Make a few more macros upper case.
|
|
|
|
|
|
| |
Problem: Some macros are in lower case.
Solution: Make a few more macros upper case. Avoid lower case macros use an
argument twice.
|
|
|
|
|
| |
Problem: Ubsan warns for integer overflow.
Solution: Swap two conditions. (Dominique Pelle)
|
|
|
|
|
| |
Problem: EMSG() is sometimes used for internal errors.
Solution: Change them to IEMSG(). (Dominique Pelle) And a few more.
|
|
|
|
|
| |
Problem: The regexp engines are not reentrant.
Solution: Add regexec_T and save/restore the state when needed.
|
|
|
|
|
|
| |
Problem: Regexp fails to match when using "\>\)\?". (Ramel)
Solution: When a state is already in the list, but addstate_here() is used
and the existing state comes later, add the new state anyway.
|
|
|
|
|
|
| |
Problem: The example that explains nested backreferences does not work
properly with the new regexp engine. (Harm te Hennepe)
Solution: Also save the end position when adding a state. (closes #990)
|
|
|
|
|
| |
Problem: Modelines in source code are inconsistant.
Solution: Use the same line in most files. Add 'noet'. (Naruhiko Nishino)
|
|
|
|
|
|
| |
Problem: Falling back from NFA to old regexp engine does not work properly.
(fritzophrenic)
Solution: Do not restore nfa_match. (Christian Brabandt, closes #867)
|
|
|
|
|
|
| |
Problem: Some character classes may differ between systems. On OS/X the
regexp test fails.
Solution: Make this less dependent on the system. (idea by Kazunobu Kuriyama)
|
|
|
|
|
| |
Problem: Warnings reported by cppcheck.
Solution: Fix the warnings. (Dominique Pelle)
|
|
|
|
|
| |
Problem: New regexp engine does not work properly with EBCDIC.
Solution: Define equivalence class characters. (Owen Leibman)
|
|
|
|
|
| |
Problem: "\%1l^#.*" does not match on a line starting with "#".
Solution: Do not clear the start-of-line flag. (Christian Brabandt)
|
|
|
|
|
|
| |
Problem: Using old style function declarations.
Solution: Change to new style function declarations. (script by Hirohito
Higashi)
|
|
|
|
|
| |
Problem: Still using __ARGS.
Solution: Remove __ARGS in several files. (script by Hirohito Higashi)
|
|
|
|
|
|
| |
Problem: Segfault reading unitialized memory.
Solution: Do not read match \z0, it does not exist. (Marius Gedminas, closes
#497)
|
|
|
|
|
|
| |
Problem: Using uninitialized memory for regexp with back reference.
(Dominique Pelle)
Solution: Initialize end_lnum.
|
|
|
|
|
| |
Problem: Equivalence class for 'd' does not work correctly.
Solution: Fix 0x1e0f and 0x1d0b. (Dominique Pelle)
|
|
|
|
|
|
| |
Problem: Invalid memory access when there are illegal bytes.
Solution: Get the length from the text, not from the character. (Dominique
Pelle)
|
|
|
|
|
| |
Problem: Not freeing memory when encountering an error.
Solution: Free the stack before returning. (Eliseo MartÃnez)
|
|
|
|
|
|
| |
Problem: Can't match "%>80v" properly for multi-byte characters.
Solution: Multiply the character number by the maximum number of bytes in a
character. (Yasuhiro Matsumoto)
|
|
|
|
|
| |
Problem: Crash with pattern: \(\)\{80000} (Dominique Pelle)
Solution: When the max limit is large fall back to the old engine.
|
|
|
|
|
| |
Problem: Compiler warning for unused argument.
Solution: Add UNUSED.
|
|
|
|
|
| |
Problem: The NFA engine does not implement the 'redrawtime' time limit.
Solution: Implement the time limit.
|
|
|
|
|
| |
Problem: Memory wasted in struct because of aligning.
Solution: Split pos in lnum and col. (Dominique Pelle)
|
|
|
|
|
|
| |
Problem: Out-of-memory error.
Solution: Avoid trying to allocate a negative amount of memory, use size_t
instead of int. (Dominique Pelle)
|
|
|
|
|
|
| |
Problem: Crash when searching for "x\{0,90000}". (Dominique Pelle)
Solution: Bail out from the NFA engine when the max limit is much higher
than the min limit.
|
|
|
|
|
| |
Problem: Can't match "%>80v" properly. (Axel Bender)
Solution: Correctly handle ">". (Christian Brabandt)
|
|
|
|
|
|
|
| |
Problem: Matching with a virtual column has a lot of overhead on very long
lines. (Issue 310)
Solution: Bail out early if there can't be a match. (Christian Brabandt)
Also check for CTRL-C at every position.
|
|
|
|
|
| |
Problem: Still confusing regexp failure and NFA_TOO_EXPENSIVE.
Solution: NFA changes equivalent of 7.4.526.
|
|
|
|
|
|
|
| |
Problem: With some regexp patterns the NFA engine uses many states and
becomes very slow. To the user it looks like Vim freezes.
Solution: When the number of states reaches a limit fall back to the old
engine. (Christian Brabandt)
|
|
|
|
|
| |
Problem: AIX compiler can't handle // comment. Issue 265.
Solution: Remove that line.
|
|
|
|
|
| |
Problem: New and old regexp engine are not consistent.
Solution: Also give an error for "\ze*" for the old regexp engine.
|
|
|
|
|
| |
Problem: Crash when searching for "\ze*". (Urtica Dioica)
Solution: Disallow a multi after \ze and \zs.
|
|
|
|
|
|
| |
Problem: It is not possible to ignore composing characters at a specific
point in a pattern.
Solution: Add the %C item.
|
|
|
|
|
|
|
| |
Problem: A non-greedy match followed by a branch is too greedy. (Ingo
Karkat)
Solution: Add NFA_MATCH when it is already in the state list if the position
differs.
|
|
|
|
|
|
|
| |
Problem: Pattern with repeated backreference does not match with new regexp
engine. (Urtica Dioica)
Solution: Also check the end of a submatch when deciding to put a state in
the state list.
|
|
|
|
|
| |
Problem: Duplicate code in regexec().
Solution: Add line_lbr flag to regexec_nl().
|
|
|
|
|
|
| |
Problem: Crash when using cpp syntax file with pattern using external
match. (Havard Garnes)
Solution: Discard match when end column is before start column.
|
|
|
|
|
|
| |
Problem: Now that the +visual feature is always enabled the #ifdefs for it
are not useful.
Solution: Remove the checks for FEAT_VISUAL.
|
|
|
|
|
| |
Problem: ":help s/\_" reports an internal error. (John Beckett)
Solution: Check for NUL and invalid character classes.
|
|
|
|
|
|
|
| |
Problem: NFA regexp doesn't handle backreference correctly. (Ryuichi
Hayashida, Urtica Dioica)
Solution: Always add NFA_SKIP, also when it already exists at the start
position.
|
|
|
|
|
|
| |
Problem: Syntax highlighting a Yaml file causes a crash. (Blake Preston)
Solution: Copy the pim structure before calling addstate() to avoid it
becoming invalide when the state list is reallocated.
|
|
|
|
|
|
|
| |
Problem: Using "\ze" in a sub-pattern does not result in the end of the
match to be set. (Axel Bender)
Solution: Copy the end of match position when a recursive match was
successful.
|