chrisg 2002/11/28 07:23:23 Modified: . Tag: fop-0_20_2-maintain CHANGES src/org/apache/fop/fo/flow Tag: fop-0_20_2-maintain Block.java Log: Added infinite loop detection (just halts processing, see bug #8878) Submitted by: Rhett Aultman ([EMAIL PROTECTED]) Revision Changes Path No revision No revision 1.10.2.33 +2 -1 xml-fop/CHANGES Index: CHANGES =================================================================== RCS file: /home/cvs/xml-fop/CHANGES,v retrieving revision 1.10.2.32 retrieving revision 1.10.2.33 diff -u -r1.10.2.32 -r1.10.2.33 --- CHANGES 26 Nov 2002 18:15:18 -0000 1.10.2.32 +++ CHANGES 28 Nov 2002 15:23:22 -0000 1.10.2.33 @@ -1,6 +1,7 @@ ============================================================================== Done since 0.20.4 release - +- Added infinite loop detection (just halts processing, see bug #8878) + Submitted by: Rhett Aultman ([EMAIL PROTECTED]) - Added autoselecting portrait/landscape on PCL Renderer (see bug #6638) Submitted by: [EMAIL PROTECTED] (Vicente Salvador) - Improved AWT Font-measuring/rendering (see bug #14657) No revision No revision 1.41.2.12 +13 -2 xml-fop/src/org/apache/fop/fo/flow/Block.java Index: Block.java =================================================================== RCS file: /home/cvs/xml-fop/src/org/apache/fop/fo/flow/Block.java,v retrieving revision 1.41.2.11 retrieving revision 1.41.2.12 diff -u -r1.41.2.11 -r1.41.2.12 --- Block.java 22 Nov 2002 15:10:46 -0000 1.41.2.11 +++ Block.java 28 Nov 2002 15:23:23 -0000 1.41.2.12 @@ -56,12 +56,15 @@ int areaHeight = 0; int contentWidth = 0; + int infLoopThreshhold = 50; String id; int span; // this may be helpful on other FOs too boolean anythingLaidOut = false; + //Added to see how long it's been since nothing was laid out. + int noLayoutCount = 0; public Block(FObj parent, PropertyList propertyList) throws FOPException { @@ -77,8 +80,16 @@ public int layout(Area area) throws FOPException { BlockArea blockArea; - // log.error(" b:LAY[" + marker + "] "); + if (!anythingLaidOut) { + noLayoutCount++; + } + if (noLayoutCount > infLoopThreshhold) { + throw new FOPException( + "No meaningful layout in block after many attempts. "+ + "Infinite loop is assumed. Processing halted."); + } + // log.error(" b:LAY[" + marker + "] "); if (this.marker == BREAK_AFTER) { return Status.OK;
--------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]