summaryrefslogtreecommitdiff
path: root/src/ex_cmds.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/ex_cmds.c')
-rw-r--r--src/ex_cmds.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/src/ex_cmds.c b/src/ex_cmds.c
index 1b73ba3ba..25441247a 100644
--- a/src/ex_cmds.c
+++ b/src/ex_cmds.c
@@ -5574,7 +5574,12 @@ do_sub(exarg_T *eap)
sub_firstlnum - regmatch.startpos[0].lnum,
sub, sub_firstline, FALSE, p_magic, TRUE);
#ifdef FEAT_EVAL
- /* Don't keep flags set by a recursive call. */
+ // If getting the substitute string caused an error, don't do
+ // the replacement.
+ if (aborting())
+ goto skip;
+
+ // Don't keep flags set by a recursive call.
subflags = subflags_save;
if (subflags.do_count)
{