neilg       2002/11/21 15:04:52

  Modified:    java/src/org/apache/xerces/impl XMLEntityManager.java
  Log:
  Fix for bug 13282.  A great deal of thanks goes to Tim Bruce for
  the patch and stand-alone test case, and to
  Jean-Francois Arcand for much patience.
  
  Revision  Changes    Path
  1.53      +17 -7     xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java
  
  Index: XMLEntityManager.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLEntityManager.java,v
  retrieving revision 1.52
  retrieving revision 1.53
  diff -u -r1.52 -r1.53
  --- XMLEntityManager.java     19 Nov 2002 01:41:37 -0000      1.52
  +++ XMLEntityManager.java     21 Nov 2002 23:04:51 -0000      1.53
  @@ -2924,12 +2924,22 @@
                   if (fCurrentEntity.position == fCurrentEntity.count) {
                       load(0, true);
                   }
  -                else if (fCurrentEntity.position >= fCurrentEntity.count - 
delimLen) {
  -                    System.arraycopy(fCurrentEntity.ch, fCurrentEntity.position,
  -                                     fCurrentEntity.ch, 0, fCurrentEntity.count - 
fCurrentEntity.position);
  -                    load(fCurrentEntity.count - fCurrentEntity.position, false);
  -                    fCurrentEntity.position = 0;
  -                } 
  +
  +                boolean bNextEntity = false;
  +
  +                while ((fCurrentEntity.position >= fCurrentEntity.count - delimLen)
  +                    && (!bNextEntity))
  +                {
  +                  System.arraycopy(fCurrentEntity.ch,
  +                                   fCurrentEntity.position,
  +                                   fCurrentEntity.ch,
  +                                   0,
  +                                   fCurrentEntity.count - fCurrentEntity.position);
  +
  +                  bNextEntity = load(fCurrentEntity.count - 
fCurrentEntity.position, false);
  +                  fCurrentEntity.position = 0;
  +                }
  +
                   if (fCurrentEntity.position >= fCurrentEntity.count - delimLen) {
                       // something must be wrong with the input:  e.g., file ends  an 
unterminated comment
                       int length = fCurrentEntity.count - fCurrentEntity.position;
  
  
  

---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to