summaryrefslogtreecommitdiff
path: root/src/regexp_bt.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/regexp_bt.c')
-rw-r--r--src/regexp_bt.c20
1 files changed, 16 insertions, 4 deletions
diff --git a/src/regexp_bt.c b/src/regexp_bt.c
index afea5e4cb..70ddfe986 100644
--- a/src/regexp_bt.c
+++ b/src/regexp_bt.c
@@ -3357,17 +3357,29 @@ regmatch(
pos = getmark_buf(rex.reg_buf, mark, FALSE);
if (pos == NULL // mark doesn't exist
- || pos->lnum <= 0 // mark isn't set in reg_buf
- || (pos->lnum == rex.lnum + rex.reg_firstlnum
- ? (pos->col == (colnr_T)(rex.input - rex.line)
+ || pos->lnum <= 0) // mark isn't set in reg_buf
+ {
+ status = RA_NOMATCH;
+ }
+ else
+ {
+ colnr_T pos_col = pos->lnum == rex.lnum + rex.reg_firstlnum
+ && pos->col == MAXCOL
+ ? (colnr_T)STRLEN(reg_getline(
+ pos->lnum - rex.reg_firstlnum))
+ : pos->col;
+
+ if ((pos->lnum == rex.lnum + rex.reg_firstlnum
+ ? (pos_col == (colnr_T)(rex.input - rex.line)
? (cmp == '<' || cmp == '>')
- : (pos->col < (colnr_T)(rex.input - rex.line)
+ : (pos_col < (colnr_T)(rex.input - rex.line)
? cmp != '>'
: cmp != '<'))
: (pos->lnum < rex.lnum + rex.reg_firstlnum
? cmp != '>'
: cmp != '<')))
status = RA_NOMATCH;
+ }
}
break;