Index: layoutmgr/LineLayoutManager.java
===================================================================
RCS file: /home/cvspublic/xml-fop/src/java/org/apache/fop/layoutmgr/LineLayoutManager.java,v
retrieving revision 1.5
diff -u -r1.5 LineLayoutManager.java
--- layoutmgr/LineLayoutManager.java	16 Oct 2003 23:54:21 -0000	1.5
+++ layoutmgr/LineLayoutManager.java	26 Nov 2003 19:50:17 -0000
@@ -252,14 +252,14 @@
                         }
 
                         inlineLC.setHyphContext(
-                          getHyphenContext(prevBP, bp));
+                          getHyphenContext(prevBP==null?prev:prevBP, bp));
                         if (inlineLC.getHyphContext() == null) {
                             break;
                         }
                         inlineLC.setFlags(LayoutContext.TRY_HYPHENATE,
                                           true);
                         // Reset to previous acceptable break
-                        reset();
+                        resetBP(prevBP==null?prev:prevBP);
                     } else {
                         /* If we are not in justified text, we can end the line at
                          * prevBP.
@@ -335,11 +335,19 @@
         return makeLineBreak(iPrevLineEnd, availIPD, talign);
     }
 
-    private void reset() {
-        while (vecInlineBreaks.get(vecInlineBreaks.size() - 1) != prevBP) {
-            vecInlineBreaks.remove(vecInlineBreaks.size() - 1);
+    private void resetBP(BreakPoss resetBP) {
+        if (resetBP == null) {
+            reset((Position) null);
+        } else {
+            while (vecInlineBreaks.get(vecInlineBreaks.size() - 1) != resetBP) {
+                vecInlineBreaks.remove(vecInlineBreaks.size() - 1);
+            }
+            reset(resetBP.getPosition());
         }
-        reset(prevBP.getPosition());
+    }
+
+    private void reset() {
+        resetBP(prevBP);
     }
 
     protected boolean couldEndLine(BreakPoss bp) {
@@ -398,14 +406,15 @@
             vecInlineBreaks.listIterator(vecInlineBreaks.size());
         while (bpIter.hasPrevious() && bpIter.previous() != prev) {
         }
-        if (bpIter.next() != prev) {
+        if (prev != null && bpIter.next() != prev) {
             getLogger().error("findHyphenPoss: problem!");
             return null;
         }
         StringBuffer sbChars = new StringBuffer(30);
         while (bpIter.hasNext()) {
             BreakPoss bp = (BreakPoss) bpIter.next();
-            if (bp.getLayoutManager() == prev.getLayoutManager()) {
+            if (prev != null &&
+                bp.getLayoutManager() == prev.getLayoutManager()) {
                 bp.getLayoutManager().getWordChars(sbChars,
                                                    prev.getPosition(), bp.getPosition());
             } else {
