diff --git a/src/evalbuffer.c b/src/evalbuffer.c
index 50d26c4..37febe4 100644
--- a/src/evalbuffer.c
+++ b/src/evalbuffer.c
@@ -274,12 +274,14 @@
 f_append(typval_T *argvars, typval_T *rettv)
 {
     linenr_T	lnum;
+    int		did_emsg_before = did_emsg;
 
     if (in_vim9script() && check_for_lnum_arg(argvars, 0) == FAIL)
 	return;
 
     lnum = tv_get_lnum(&argvars[0]);
-    set_buffer_lines(curbuf, lnum, TRUE, &argvars[1], rettv);
+    if (did_emsg == did_emsg_before)
+	set_buffer_lines(curbuf, lnum, TRUE, &argvars[1], rettv);
 }
 
 /*
@@ -290,6 +292,7 @@
 {
     linenr_T	lnum;
     buf_T	*buf;
+    int		did_emsg_before = did_emsg;
 
     if (in_vim9script()
 	    && (check_for_buffer_arg(argvars, 0) == FAIL
@@ -303,7 +306,8 @@
     else
     {
 	lnum = tv_get_lnum_buf(&argvars[1], buf);
-	set_buffer_lines(buf, lnum, append, &argvars[2], rettv);
+	if (did_emsg == did_emsg_before)
+	    set_buffer_lines(buf, lnum, append, &argvars[2], rettv);
     }
 }
 
@@ -502,6 +506,9 @@
     win_T	*curwin_save = NULL;
     tabpage_T	*tp;
     win_T	*wp;
+    int		did_emsg_before = did_emsg;
+
+    rettv->vval.v_number = 1;	// FAIL by default
 
     if (in_vim9script()
 	    && (check_for_buffer_arg(argvars, 0) == FAIL
@@ -511,13 +518,12 @@
 
     buf = tv_get_buf(&argvars[0], FALSE);
     if (buf == NULL)
-    {
-	rettv->vval.v_number = 1; // FAIL
 	return;
-    }
     is_curbuf = buf == curbuf;
 
     first = tv_get_lnum_buf(&argvars[1], buf);
+    if (did_emsg > did_emsg_before)
+	return;
     if (argvars[2].v_type != VAR_UNKNOWN)
 	last = tv_get_lnum_buf(&argvars[2], buf);
     else
@@ -525,10 +531,7 @@
 
     if (buf->b_ml.ml_mfp == NULL || first < 1
 			   || first > buf->b_ml.ml_line_count || last < first)
-    {
-	rettv->vval.v_number = 1;	// FAIL
 	return;
-    }
 
     if (!is_curbuf)
     {
@@ -577,6 +580,7 @@
 	curbuf = curbuf_save;
 	curwin = curwin_save;
     }
+    rettv->vval.v_number = 0; // OK
 }
 
 /*
@@ -780,6 +784,7 @@
     linenr_T	lnum = 1;
     linenr_T	end = 1;
     buf_T	*buf;
+    int		did_emsg_before = did_emsg;
 
     if (in_vim9script()
 	    && (check_for_buffer_arg(argvars, 0) == FAIL
@@ -791,6 +796,8 @@
     if (buf != NULL)
     {
 	lnum = tv_get_lnum_buf(&argvars[1], buf);
+	if (did_emsg > did_emsg_before)
+	    return;
 	if (argvars[2].v_type == VAR_UNKNOWN)
 	    end = lnum;
 	else
@@ -852,12 +859,14 @@
 f_setline(typval_T *argvars, typval_T *rettv)
 {
     linenr_T	lnum;
+    int		did_emsg_before = did_emsg;
 
     if (in_vim9script() && check_for_lnum_arg(argvars, 0) == FAIL)
 	return;
 
     lnum = tv_get_lnum(&argvars[0]);
-    set_buffer_lines(curbuf, lnum, FALSE, &argvars[1], rettv);
+    if (did_emsg == did_emsg_before)
+	set_buffer_lines(curbuf, lnum, FALSE, &argvars[1], rettv);
 }
 #endif  // FEAT_EVAL
 
