diff --git a/builtin/apply.c b/builtin/apply.c
index 771c972c550..f669157b42e 100644
--- a/builtin/apply.c
+++ b/builtin/apply.c
@@ -1864,13 +1864,13 @@ static int match_fragment(struct image *img,
 		if (match_end && (preimage->nr + try_lno != img->nr))
 			return 0;
 	} else if (ws_error_action == correct_ws_error &&
-		   (ws_rule & WS_BLANK_AT_EOF) && match_end) {
+		   (ws_rule & WS_BLANK_AT_EOF)) {
 		/*
-		 * This hunk that matches at the end extends beyond
-		 * the end of img, and we are removing blank lines
-		 * at the end of the file.  This many lines from the
-		 * beginning of the preimage must match with img, and
-		 * the remainder of the preimage must be blank.
+		 * This hunk extends beyond the end of img, and we are
+		 * removing blank lines at the end of the file.  This
+		 * many lines from the beginning of the preimage must
+		 * match with img, and the remainder of the preimage
+		 * must be blank.
 		 */
 		preimage_limit = img->nr - try_lno;
 	} else {
diff --git a/t/t4124-apply-ws-rule.sh b/t/t4124-apply-ws-rule.sh
index fb9ad247bf7..451d75e3fb2 100755
--- a/t/t4124-apply-ws-rule.sh
+++ b/t/t4124-apply-ws-rule.sh
@@ -325,6 +325,18 @@ test_expect_success 'two missing blank lines at end with --whitespace=fix' '
 	test_cmp one expect
 '
 
+test_expect_success 'missing blank line at end, insert before end, --whitespace=fix' '
+	{ echo a; echo; } >one &&
+	git add one &&
+	{ echo b; echo a; echo; } >one &&
+	cp one expect &&
+	git diff -- one >patch &&
+	echo a >one &&
+	test_must_fail git apply patch &&
+	git apply --whitespace=fix patch &&
+	test_cmp one expect
+'
+
 test_expect_success 'shrink file with tons of missing blanks at end of file' '
 	{ echo a; echo b; echo c; } >one &&
 	cp one no-blank-lines &&