diff --git a/src/lib-sieve/sieve-actions.c b/src/lib-sieve/sieve-actions.c
index 95e15e7ba4a79abd66fa7d2a59907f95784ace6a..1cfa0f2415f2df73c17ce59942a1a9c3b0eb6ae4 100644
--- a/src/lib-sieve/sieve-actions.c
+++ b/src/lib-sieve/sieve-actions.c
@@ -467,7 +467,7 @@ static bool act_store_execute
 	struct act_store_transaction *trans = 
 		(struct act_store_transaction *) tr_context;
 	struct mail *mail =	( action->mail != NULL ?
-		action->mail : sieve_message_get_mail(aenv->msgctx) );	
+		action->mail : aenv->msgdata->mail );	
 	struct mail_save_context *save_ctx;
 	struct mail_keywords *keywords = NULL;
 	bool result = TRUE;
diff --git a/tests/extensions/editheader/errors.svtest b/tests/extensions/editheader/errors.svtest
index 863892ae37bfb8d1a774c18ff563e85b7e4e0a83..00a144f2ee51ff9399957848a7dceafb3ad559bd 100644
--- a/tests/extensions/editheader/errors.svtest
+++ b/tests/extensions/editheader/errors.svtest
@@ -66,3 +66,34 @@ test "Invalid field value" {
 	}
 }
 
+test_set "message" text:
+From: stephan@example.com
+To: tss@example.com
+Subject: Frop
+
+Frop!
+.
+;
+
+test "Implicit keep at runtime error" {
+	if not test_script_compile "errors/runtime-error.sieve" {
+		test_fail "compile failed";
+	}
+
+	if not test_script_run {
+		test_fail "run failed";
+	}
+
+	if test_result_execute {
+		test_fail "result execution should have failed";		
+	}
+
+	if not test_message :folder "INBOX" 0 {
+		test_fail "message not stored (no implicit keep)";
+	}
+
+	if exists "X-Frop" {
+		test_fail "implicit keep message has editheader changes";
+	}
+}
+
diff --git a/tests/extensions/editheader/errors/runtime-error.sieve b/tests/extensions/editheader/errors/runtime-error.sieve
new file mode 100644
index 0000000000000000000000000000000000000000..b308d74c6c314266d3f7390b1d530003cee95792
--- /dev/null
+++ b/tests/extensions/editheader/errors/runtime-error.sieve
@@ -0,0 +1,6 @@
+require "editheader";
+require "fileinto";
+
+addheader "X-Frop" "Friep";
+
+fileinto "Rediculous.non-existent.folder";