Commit Graph

110 Commits

Author SHA1 Message Date
ZyX
c2f3e361c5 *: Add comment to all C files 2017-04-19 19:11:50 +03:00
ZyX
9d302c60f0 regexp_nfa: Remove octal constant 2017-04-16 21:43:27 +03:00
ZyX
372b6af8ea regexp_nfa: Remove another has_mbyte/…-checking code 2017-04-16 21:43:27 +03:00
ZyX
22fb9d8d25 Merge branch 'master' into 1476-changes 2017-04-10 19:12:56 +03:00
Björn Linse
c1cf033981 lint: fix clint errors around mb_tolower calls 2017-04-10 12:02:26 +02:00
Björn Linse
db9ef6263e mbyte: replace vim_tolower with mb_tolower handling locale correctly 2017-04-10 12:01:40 +02:00
ZyX
171baaee93 strings: Remove vim_strbyte
Ref #1476
2017-04-07 23:15:53 +03:00
ZyX
fb146e80aa eval: Split eval.c into smaller files 2017-03-29 10:05:06 +03:00
Justin M. Keyes
929859ed81 vim-patch:7.4.2355
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.

16b3578f35
2017-03-22 18:42:58 +01:00
Michael Ennen
415495273c vim-patch:7.4.1793
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)

e8aee7dcf9
2016-12-31 14:38:27 -07:00
James McCoy
e085f7c5f1 vim-patch:7.4.1708
Problem:    New regexp engine does not work properly with EBCDIC.
Solution:   Define equivalence class characters. (Owen Leibman)

2a6fa564a3

Although nvim doesn't support EBCDIC systems, this keeps us inline with
upstream code so its easier to merge future patches in this area and
improves the readability of the code.
2016-12-06 11:16:33 -05:00
Michael Ennen
b8bb1f6729 vim-patch:7.4.1967
Problem: Falling back from NFA to old regexp engine does not work properly.
(fritzophrenic)
Solution: Do not restore nfa_match. (Christian Brabandt, closes vim/vim#867)

6747fabc73

Helped-by: jamessan
2016-11-02 20:05:45 -04:00
Justin M. Keyes
df072c3b2b refactor: eliminate misc2.c
move `call_shell` to misc1.c
Move some fns to state.c
Move some fns to option.c
Move some fns to memline.c
Move `vim_chdir*` fns to file_search.c
Move some fns to new module, bytes.c
Move some fns to fileio.c
2016-09-13 16:20:09 +02:00
Patrick Jackson
0253766b5d lint: Close resource leak (#5288) 2016-09-03 00:41:55 +02:00
Michael Ennen
6fe8c1d051 vim-patch:7.4.1305 #5094
Problem:    "\%1l^#.*" does not match on a line starting with "#".
Solution:   Do not clear the start-of-line flag. (Christian Brabandt)

7c29f38781

Helped-by: jamessan
Helped-by: mhinz
2016-08-01 03:59:04 -04:00
ZyX
739f066afe *: Also fix the adjacent errors 2016-06-11 00:08:58 +03:00
ZyX
d359bb3f60 *: Fix errors from new linter checks 2016-06-11 00:08:57 +03:00
ZyX
cf4e1fb0f4 *: Fix new linter errors
Originally there were 128 new errors, so I thought this is a good idea to fix 
all of them. Of course, this commit also fixes many suppressed errors.
2016-05-01 20:35:51 +03:00
James McCoy
204629a1a0 regexp_nfa.c: Fix various linter errors 2016-04-25 06:36:13 -04:00
James McCoy
ee9cca892c vim-patch:7.4.613
Problem:    The NFA engine does not implement the 'redrawtime' time limit.
Solution:   Implement the time limit.

70781ee403
2016-04-25 06:36:08 -04:00
watiko
db20edef69 vim-patch:7.4.937
Problem:    Segfault reading unitialized memory.
Solution:   Do not read match \z0, it does not exist. (Marius Gedminas, closes
            vim/vim#497)

5ad075c073
2016-02-17 03:00:13 +09:00
watiko
ec6fcf3b1c vim-patch:7.4.887
Problem:    Using uninitialized memory for regexp with back reference.
            (Dominique Pelle)
Solution:   Initialize end_lnum.

c2b717ebd6

---

see: "[bug] use of uninitialized memory in regexp_nfa.c with invalid back reference"
     https://groups.google.com/d/msg/vim_dev/JWmrT5-NnPQ/U_TgaRW8AwAJ
2016-02-15 18:10:30 +09:00
oni-link
291495a7b0 regexp_nfa.c: Speed up find_match_text()
An extra test in commit 0a116c828d was
introduced, to check for end of string with a call to strlen(). This was
necessary, because an incorrect length for invalid byte sequences was
used to step through the string. This slowed down find_match_text()
compared to vim's version.

To speed up things, the extra check was removed and a sequence length
of 1 for invalid byte sequences is used.

Fixes issue #3486
2016-01-24 23:38:38 +01:00
Michael Ennen
62f1aaedb1 vim-patch:7.4.715 #4003
Problem:    Invalid memory access when there are illegal bytes.
Solution:   Get the length from the text, not from the character. (Dominique
            Pelle)

2186ffa2c7
2016-01-13 22:12:53 -05:00
Shougo Matsushita
798fe6cfa3 vim-patch:7.4.623
Problem:    Crash with pattern: \(\)\{80000}  (Dominique Pelle)
Solution:   When the max limit is large fall back to the old engine.

a1d2c58985
2015-12-01 07:50:30 +09:00
Shougo Matsushita
3b615980c8 vim-patch:7.4.651 #3644
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)

4f36dc3bf7
2015-11-10 18:26:35 +01:00
Thiago de Arruda
0a116c828d regexp: Fix invalid multibyte reads at end of strings
Close #3150
2015-09-18 14:35:26 -03:00
Marco Hinz
3df37a8424 vim-patch:7.4.776 #3062
Problem:  Equivalence class for 'd' does not work correctly.
Solution: Fix 0x1e0f and 0x1d0b. (Dominique Pelle)

Original patch:
  https://code.google.com/p/vim/source/detail?r=94b17958585153641ad1e813fa144cad57c7170f
2015-08-09 21:09:28 -04:00
cztchoice
d4396acedb vim-patch:7.4.600 #3081
Problem:    Memory wasted in struct because of aligning.
Solution:   Split pos in lnum and col. (Dominique Pelle)

https://github.com/vim/vim/commit/v7-4-600
2015-07-31 21:30:52 -04:00
Michael Reed
4f444ae4f8 Remove POSIX 'cpoptions': '\' 2015-07-19 15:14:22 -04:00
David Bürgin
f04bc91c2f vim-patch:7.4.593 #2657
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.

https://github.com/vim/vim/commit/v7-4-593

See https://groups.google.com/d/msg/vim_dev/c7owwoseba8/ZETgSNZ6p10J
2015-06-13 21:38:39 -04:00
David Bürgin
5a9ad68b25 vim-patch:7.4.582 #2653
Problem:    Can't match "%>80v" properly. (Axel Bender)
Solution:   Correctly handle ">". (Christian Brabandt)

https://github.com/vim/vim/commit/v7-4-582

See https://groups.google.com/d/msg/vim_dev/n-02i4FnOcw/P3Yyx1OLeXgJ

Slightly adapted due to the long_u refactoring in
2ceb1c74d5.

Reviewed-by: Florian Walch <florian@fwalch.com>

Fixes #2726
2015-05-26 01:07:37 -04:00
David Bürgin
5e1d52a708 Passing by: regexp_nfa.c: Convert add_here variable to bool 2015-05-13 03:10:25 -04:00
David Bürgin
de6b3fbb15 vim-patch:7.4.577
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.

https://github.com/vim/vim/commit/v7-4-577

See also https://code.google.com/p/vim/issues/detail?id=310

Slightly adapted due to the long_u refactoring in
2ceb1c74d5.
2015-05-13 03:10:24 -04:00
Felipe Oliveira Carvalho
2ca8afc74e Replace vim_isxdigit() with to ascii_isxdigit() defined in ascii.h 2015-04-24 20:37:13 -03:00
Felipe Oliveira Carvalho
caabcae0b7 Replace VIM_ISDIGIT() and vim_isdigit() with ascii_isdigit() defined in ascii.h 2015-04-24 20:37:13 -03:00
Felipe Oliveira Carvalho
93bf201119 Replace vim_iswhite with ascii_iswhite() defined in ascii.h 2015-04-24 20:37:13 -03:00
Thiago de Arruda
34c48aaf12 memory: Add free wrapper and refactor project to use it
We already use wrappers for allocation, the new `xfree` function is the
equivalent for deallocation and provides a way to fully replace the malloc
implementation used by Neovim.
2015-04-13 08:22:44 -03:00
David Bürgin
d3bb177f1e vim-patch:7.4.497 #2295
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)

https://github.com/vim/vim/releases/tag/v7-4-497

Helped-by: David Bürgin <676c7473@gmail.com>
Helped-by: Justin M. Keyes <justinkz@gmail.com>
Helped-by: Scott Prager <splinterofchaos@gmail.com>
2015-04-05 19:24:58 -04:00
Anton Ovchinnikov
9927e99948 Remove always-true expressions 2015-03-16 11:01:07 -04:00
Mike Zeller
f28941b96d illumos requires the use of limits.h for things like INT_MAX #2049 2015-02-26 11:42:05 -05:00
Eliseo Martínez
77ace65bdc coverity/13773: Resource leak: RI.
Problem    : Resource leak @ 3324.
Diagnostic : Real issue.
Rationale  : Stack is not being freed on error cases.
Resolution : Free stack before invoking EMSG_RET_NULL.
2015-02-11 19:10:36 +01:00
Eliseo Martínez
2ceb1c74d5 Remove long_u: regexp: Refactor long_u. 2015-01-19 19:47:28 +01:00
Florian Walch
fe0801d51d vim-patch:7.4.527
Problem:    Still confusing regexp failure and NFA_TOO_EXPENSIVE.
Solution:   NFA changes equivalent of 7.4.526.

https://code.google.com/p/vim/source/detail?r=v7-4-527
2014-12-24 14:23:07 +01:00
Florian Walch
fc0be5b79d vim-patch:7.4.474
Problem:    AIX compiler can't handle // comment.  Issue 265.
Solution:   Remove that line.

https://code.google.com/p/vim/source/detail?r=v7-4-474
2014-12-23 21:17:01 +01:00
Eliseo Martínez
78b49ce950 Fix warnings: regexp_nfa.c: nfa_regatom(): Dead assignment: HI.
Problem    : Dead assignment @ 1554.
Diagnostic : Harmless issue.
Rationale  : `result` is used when analyzing if a bracketed expresion
             `[<whatever>]` can be condensed into a character class. Not
             used for anything else anywhere. So, it's safe to remove.
Resolution : Remove dead assingment and move declaration of `result` to
             the scope where it's used.
2014-11-15 12:48:28 +01:00
Scott Prager
ca7c509ae0 vim-patch:7.4.437
Problem:    New and old regexp engine are not consistent.
Solution:   Also give an error for "\ze*" for the old regexp engine.

https://code.google.com/p/vim/source/detail?r=v7-4-437
2014-11-13 11:38:19 -05:00
Scott Prager
44635add18 vim-patch:7.4.421
Problem:    Crash when searching for "\ze*". (Urtica Dioica)
Solution:   Disallow a multi after \ze and \zs.

https://code.google.com/p/vim/source/detail?r=v7-4-421
2014-11-13 11:38:19 -05:00
Damián Silvani
9ea28e1903 vim-patch:7.4.293
Problem:    It is not possible to ignore composing characters at a
            specific point in a pattern.
Solution:   Add the %C item.

https://code.google.com/p/vim/source/detail?r=10fc95f48546f438648b8357062e93c9c2c0a377
2014-08-14 23:06:52 -03:00
Pavel Platto
47084ea765 Use strict function prototypes #945
`-Wstrict-prototypes` warn if a function is declared or defined without
specifying the argument types.

This warning disallow function prototypes with empty parameter list.
In C, a function declared with an empty parameter list accepts an
arbitrary number of arguments when being called. This is for historic
reasons; originally, C functions didn't have prototypes, as C evolved
from B, a typeless language. When prototypes were added, the original
typeless declarations were left in the language for backwards
compatibility.
Instead we should provide `void` in argument list to state
that function doesn't have arguments.

Also this warning disallow declaring type of the parameters after the
parentheses because Neovim header generator produce no declarations for
old-stlyle prototypes: it expects to find `{` after prototype.
2014-07-14 20:28:40 +02:00