updated for version 7.0-038
diff --git a/src/eval.c b/src/eval.c
index 273ac41..01610fe 100644
--- a/src/eval.c
+++ b/src/eval.c
@@ -8252,6 +8252,12 @@
 	EMSG(_("E785: complete() can only be used in Insert mode"));
 	return;
     }
+
+    /* Check for undo allowed here, because if something was already inserted
+     * the line was already saved for undo and this check isn't done. */
+    if (!undo_allowed())
+	return;
+
     if (argvars[1].v_type != VAR_LIST || argvars[1].vval.v_list == NULL)
     {
 	EMSG(_(e_invarg));