diff options
author | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-12-21 21:30:01 -0500 |
---|---|---|
committer | Jan Edmund Lazo <jan.lazo@mail.utoronto.ca> | 2020-12-21 21:34:18 -0500 |
commit | 07425d45e6c4bc0525504e24aee0ad0864d71379 (patch) | |
tree | 348d52efa9071fe2c217a5ec9c778afbdbe4555a /src | |
parent | 1eab3584ba087b9de52624fc632ccde5943811c3 (diff) | |
download | rneovim-07425d45e6c4bc0525504e24aee0ad0864d71379.tar.gz rneovim-07425d45e6c4bc0525504e24aee0ad0864d71379.tar.bz2 rneovim-07425d45e6c4bc0525504e24aee0ad0864d71379.zip |
vim-patch:8.2.2181: valgrind warnings for using uninitialized value
Problem: Valgrind warnings for using uninitialized value.
Solution: Do not use "start" or "end" unless there is a match.
https://github.com/vim/vim/commit/a3d10a508c404a32485adc86284725e0bdc5b602
Diffstat (limited to 'src')
-rw-r--r-- | src/nvim/regexp.c | 26 | ||||
-rw-r--r-- | src/nvim/regexp_nfa.c | 26 |
2 files changed, 28 insertions, 24 deletions
diff --git a/src/nvim/regexp.c b/src/nvim/regexp.c index 2878e73573..fb08cd2727 100644 --- a/src/nvim/regexp.c +++ b/src/nvim/regexp.c @@ -3605,19 +3605,21 @@ theend: if (backpos.ga_maxlen > BACKPOS_INITIAL) ga_clear(&backpos); - // Make sure the end is never before the start. Can happen when \zs and - // \ze are used. - if (REG_MULTI) { - const lpos_T *const start = &rex.reg_mmatch->startpos[0]; - const lpos_T *const end = &rex.reg_mmatch->endpos[0]; + if (retval > 0) { + // Make sure the end is never before the start. Can happen when \zs + // and \ze are used. + if (REG_MULTI) { + const lpos_T *const start = &rex.reg_mmatch->startpos[0]; + const lpos_T *const end = &rex.reg_mmatch->endpos[0]; - if (end->lnum < start->lnum - || (end->lnum == start->lnum && end->col < start->col)) { - rex.reg_mmatch->endpos[0] = rex.reg_mmatch->startpos[0]; - } - } else { - if (rex.reg_match->endp[0] < rex.reg_match->startp[0]) { - rex.reg_match->endp[0] = rex.reg_match->startp[0]; + if (end->lnum < start->lnum + || (end->lnum == start->lnum && end->col < start->col)) { + rex.reg_mmatch->endpos[0] = rex.reg_mmatch->startpos[0]; + } + } else { + if (rex.reg_match->endp[0] < rex.reg_match->startp[0]) { + rex.reg_match->endp[0] = rex.reg_match->startp[0]; + } } } diff --git a/src/nvim/regexp_nfa.c b/src/nvim/regexp_nfa.c index feb118833d..d38719f396 100644 --- a/src/nvim/regexp_nfa.c +++ b/src/nvim/regexp_nfa.c @@ -6594,19 +6594,21 @@ static long nfa_regexec_both(char_u *line, colnr_T startcol, #endif theend: - // Make sure the end is never before the start. Can happen when \zs and - // \ze are used. - if (REG_MULTI) { - const lpos_T *const start = &rex.reg_mmatch->startpos[0]; - const lpos_T *const end = &rex.reg_mmatch->endpos[0]; + if (retval > 0) { + // Make sure the end is never before the start. Can happen when \zs and + // \ze are used. + if (REG_MULTI) { + const lpos_T *const start = &rex.reg_mmatch->startpos[0]; + const lpos_T *const end = &rex.reg_mmatch->endpos[0]; - if (end->lnum < start->lnum - || (end->lnum == start->lnum && end->col < start->col)) { - rex.reg_mmatch->endpos[0] = rex.reg_mmatch->startpos[0]; - } - } else if (retval > 0) { - if (rex.reg_match->endp[0] < rex.reg_match->startp[0]) { - rex.reg_match->endp[0] = rex.reg_match->startp[0]; + if (end->lnum < start->lnum + || (end->lnum == start->lnum && end->col < start->col)) { + rex.reg_mmatch->endpos[0] = rex.reg_mmatch->startpos[0]; + } + } else { + if (rex.reg_match->endp[0] < rex.reg_match->startp[0]) { + rex.reg_match->endp[0] = rex.reg_match->startp[0]; + } } } |