aboutsummaryrefslogtreecommitdiff
path: root/src/nvim/regexp.c
diff options
context:
space:
mode:
authorJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-12-21 21:30:01 -0500
committerJan Edmund Lazo <jan.lazo@mail.utoronto.ca>2020-12-21 21:34:18 -0500
commit07425d45e6c4bc0525504e24aee0ad0864d71379 (patch)
tree348d52efa9071fe2c217a5ec9c778afbdbe4555a /src/nvim/regexp.c
parent1eab3584ba087b9de52624fc632ccde5943811c3 (diff)
downloadrneovim-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/nvim/regexp.c')
-rw-r--r--src/nvim/regexp.c26
1 files changed, 14 insertions, 12 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];
+ }
}
}