comparison src/evalfunc.c @ 31802:ddbc560ecc41 v9.0.1233

patch 9.0.1233: search() loops forever if "skip" is TRUE for all matches Commit: https://github.com/vim/vim/commit/3d79f0a4309995956bd8889940cca22f7a15881d Author: Bram Moolenaar <Bram@vim.org> Date: Sun Jan 22 20:14:26 2023 +0000 patch 9.0.1233: search() loops forever if "skip" is TRUE for all matches Problem: search() loops forever if "skip" is TRUE for all matches. Solution: Keep the position of the first match.
author Bram Moolenaar <Bram@vim.org>
date Sun, 22 Jan 2023 21:15:03 +0100
parents 152bb9e6b4b4
children e16361210675
comparison
equal deleted inserted replaced
31801:c476ed5d66ef 31802:ddbc560ecc41
8792 subpatnum = FAIL; 8792 subpatnum = FAIL;
8793 8793
8794 if (subpatnum == FAIL || !use_skip) 8794 if (subpatnum == FAIL || !use_skip)
8795 // didn't find it or no skip argument 8795 // didn't find it or no skip argument
8796 break; 8796 break;
8797 firstpos = pos; 8797 if (firstpos.lnum == 0)
8798 firstpos = pos;
8798 8799
8799 // If the skip expression matches, ignore this match. 8800 // If the skip expression matches, ignore this match.
8800 { 8801 {
8801 int do_skip; 8802 int do_skip;
8802 int err; 8803 int err;