updated for version 7.4a.028
Problem:    Crash when spell checking in new buffer.
Solution:   Set the b_p_key field.  (Mike Williams)
diff --git a/src/spell.c b/src/spell.c
index e558a99..20344f2 100644
--- a/src/spell.c
+++ b/src/spell.c
@@ -9054,6 +9054,9 @@
     {
 	buf->b_spell = TRUE;
 	buf->b_p_swf = TRUE;	/* may create a swap file */
+#ifdef FEAT_CRYPT
+	buf->b_p_key = empty_option;
+#endif
 	ml_open(buf);
 	ml_open_file(buf);	/* create swap file now */
     }
diff --git a/src/testdir/test58.in b/src/testdir/test58.in
index 9600e83..cef1cfa 100644
--- a/src/testdir/test58.in
+++ b/src/testdir/test58.in
@@ -7,6 +7,10 @@
 :set enc=latin1
 :e!
 :"
+:" Check using z= in new buffer (crash fixed by patch 7.4a.028).
+:set maxmem=512 spell
+iasdz=:"
+:"
 :" Function to test .aff/.dic with list of good and bad words.
 :func TestOne(aff, dic)
   set spellfile=
diff --git a/src/version.c b/src/version.c
index 64325c2..f0dd371 100644
--- a/src/version.c
+++ b/src/version.c
@@ -728,6 +728,8 @@
 static int included_patches[] =
 {   /* Add new patch number below this line */
 /**/
+    28,
+/**/
     27,
 /**/
     26,