Index: lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/test_parseerror.aff
===================================================================
--- lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/test_parseerror.aff	(revision 0)
+++ lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/test_parseerror.aff	(revision 0)
@@ -0,0 +1,20 @@
+SET UTF-8
+TRY abcdefghijklmopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ
+
+SFX A Y 3
+SFX A   0     e         n
+SFX A   0     e         t
+SFX A   0     e         h
+
+SFX C Y 2
+SFX C   0     d/C       c
+SFX C   0     c         b
+
+SFX D Y 1
+SFX D   0     s         o
+
+SFX E Y 1
+SFX CA  0     /CaCp
+
+PFX B Y 1
+PFX B   0     s         o
\ No newline at end of file
Index: lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/HunspellDictionaryTest.java
===================================================================
--- lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/HunspellDictionaryTest.java	(revision 1329677)
+++ lucene/analysis/common/src/test/org/apache/lucene/analysis/hunspell/HunspellDictionaryTest.java	(working copy)
@@ -19,6 +19,7 @@
 
 import org.apache.lucene.util.LuceneTestCase;
 import org.apache.lucene.util.Version;
+import org.junit.Assert;
 import org.junit.Test;
 
 import java.io.IOException;
@@ -42,4 +43,22 @@
     affixStream.close();
     dictStream.close();
   }
+
+  @Test
+  public void testHunspellDictionary_parseError() throws IOException, ParseException {
+    InputStream affixStream = getClass().getResourceAsStream("test_parseerror.aff");
+    InputStream dictStream = getClass().getResourceAsStream("test.dic");
+
+    try {
+      HunspellDictionary dictionary = new HunspellDictionary(affixStream, dictStream, TEST_VERSION_CURRENT);
+      Assert.fail();
+    } catch(ParseException e) {
+      Assert.assertTrue(e.getMessage().startsWith("Unable to read affix rule 'SFX CA  0     /CaCp'"));
+    }
+
+    affixStream.close();
+    dictStream.close();
+  }
+
+
 }
Index: lucene/analysis/common/src/java/org/apache/lucene/analysis/hunspell/HunspellDictionary.java
===================================================================
--- lucene/analysis/common/src/java/org/apache/lucene/analysis/hunspell/HunspellDictionary.java	(revision 1329677)
+++ lucene/analysis/common/src/java/org/apache/lucene/analysis/hunspell/HunspellDictionary.java	(working copy)
@@ -154,7 +154,7 @@
    * @param decoder CharsetDecoder to decode the content of the file
    * @throws IOException Can be thrown while reading from the InputStream
    */
-  private void readAffixFile(InputStream affixStream, CharsetDecoder decoder) throws IOException {
+  private void readAffixFile(InputStream affixStream, CharsetDecoder decoder) throws IOException, ParseException {
     prefixes = new CharArrayMap<List<HunspellAffix>>(version, 8, ignoreCase);
     suffixes = new CharArrayMap<List<HunspellAffix>>(version, 8, ignoreCase);
     
@@ -187,7 +187,7 @@
   private void parseAffix(CharArrayMap<List<HunspellAffix>> affixes,
                           String header,
                           BufferedReader reader,
-                          String conditionPattern) throws IOException {
+                          String conditionPattern) throws IOException, ParseException {
     String args[] = header.split("\\s+");
 
     boolean crossProduct = args[2].equals("Y");
@@ -197,8 +197,12 @@
       String line = reader.readLine();
       String ruleArgs[] = line.split("\\s+");
 
+      if (ruleArgs.length < 5) {
+        throw new ParseException("Unable to read affix rule '" + line + "': " + ruleArgs.length + " elements found while 5 expected" , 0);
+      }
+
       HunspellAffix affix = new HunspellAffix();
-      
+
       affix.setFlag(flagParsingStrategy.parseFlag(ruleArgs[1]));
       affix.setStrip(ruleArgs[2].equals("0") ? "" : ruleArgs[2]);
 
