diff --git a/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java b/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java
index 0de1a20..11f20ea 100644
--- a/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java
+++ b/fop-core/src/main/java/org/apache/fop/complexscripts/scripts/DefaultScriptProcessor.java
@@ -153,7 +153,8 @@
 
     protected boolean isReorderedMark(GlyphDefinitionTable gdef, int[] glyphs, int[] unscaledWidths, int index, int[] pa) {
         pa = (pa != null) ? pa : new int[1];
-        return gdef.isGlyphClass(glyphs[index], GlyphDefinitionTable.GLYPH_CLASS_MARK) && pa[0] != 0;
+        int paindex = Math.min(pa.length - 1, index);
+        return gdef.isGlyphClass(glyphs[index], GlyphDefinitionTable.GLYPH_CLASS_MARK) && pa[paindex] != 0;
     }
 
 }
diff --git a/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java b/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java
index b835706..b1439a0 100644
--- a/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java
+++ b/fop-core/src/test/java/org/apache/fop/complexscripts/scripts/DefaultScriptTestCase.java
@@ -52,6 +52,15 @@
         Assert.assertEquals(actual.charAt(0), 57344);
     }
 
+    @Test
+    public void testProcessorReorder2() {
+        String in = "\u00F6\u0323";
+        int[][] gpa = new int[2][2];
+        gpa[1][1] = 1;
+        String actual = getFont().reorderCombiningMarks(in, gpa, OTFScript.DEFAULT, null, null).toString();
+        Assert.assertEquals(actual.charAt(0), 803);
+    }
+
     private MultiByteFont getFont() {
         MultiByteFont font = new MultiByteFont(null, null);
         font.setWidthArray(new int[0]);
