patch 8.2.0502: Vim9: some code is not tested
Problem: Vim9: some code is not tested.
Solution: Add more tests. Fix uncovered problems.
diff --git a/src/regexp.c b/src/regexp.c
index 4e21d44..b4fb595 100644
--- a/src/regexp.c
+++ b/src/regexp.c
@@ -537,16 +537,30 @@
* Stop at end of "startp" or where "dirc" is found ('/', '?', etc).
* Take care of characters with a backslash in front of it.
* Skip strings inside [ and ].
- * When "newp" is not NULL and "dirc" is '?', make an allocated copy of the
- * expression and change "\?" to "?". If "*newp" is not NULL the expression
- * is changed in-place.
*/
char_u *
skip_regexp(
char_u *startp,
int dirc,
+ int magic)
+{
+ return skip_regexp_ex(startp, dirc, magic, NULL, NULL);
+}
+
+/*
+ * skip_regexp() with extra arguments:
+ * When "newp" is not NULL and "dirc" is '?', make an allocated copy of the
+ * expression and change "\?" to "?". If "*newp" is not NULL the expression
+ * is changed in-place.
+ * If a "\?" is changed to "?" then "dropped" is incremented, unless NULL.
+ */
+ char_u *
+skip_regexp_ex(
+ char_u *startp,
+ int dirc,
int magic,
- char_u **newp)
+ char_u **newp,
+ int *dropped)
{
int mymagic;
char_u *p = startp;
@@ -579,6 +593,8 @@
if (*newp != NULL)
p = *newp + (p - startp);
}
+ if (dropped != NULL)
+ ++*dropped;
if (*newp != NULL)
STRMOVE(p, p + 1);
else