neilg       2002/10/09 14:12:11

  Modified:    java/src/org/apache/xerces/impl XMLDocumentScannerImpl.java
  Log:
  formerly, if Xerces encountered a file where the end-tag of the root element was 
repeated, it would enter an infinite loop and only stop when the JVM ran out of 
memory.  This commit fixes this problem.
  
  Revision  Changes    Path
  1.28      +16 -9     
xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentScannerImpl.java
  
  Index: XMLDocumentScannerImpl.java
  ===================================================================
  RCS file: 
/home/cvs/xml-xerces/java/src/org/apache/xerces/impl/XMLDocumentScannerImpl.java,v
  retrieving revision 1.27
  retrieving revision 1.28
  diff -u -r1.27 -r1.28
  --- XMLDocumentScannerImpl.java       4 Oct 2002 21:49:51 -0000       1.27
  +++ XMLDocumentScannerImpl.java       9 Oct 2002 21:12:11 -0000       1.28
  @@ -662,7 +662,8 @@
               // premature end of file
               catch (EOFException e) {
                   reportFatalError("PrematureEOF", null);
  -                throw e;
  +                return false;
  +                //throw e;
               }
   
   
  @@ -817,7 +818,8 @@
               // premature end of file
               catch (EOFException e) {
                   reportFatalError("PrematureEOF", null);
  -                throw e;
  +                return false;
  +                //throw e;
               }
   
               return true;
  @@ -925,7 +927,8 @@
               // premature end of file
               catch (EOFException e) {
                   reportFatalError("PrematureEOF", null);
  -                throw e;
  +                return false;
  +                //throw e;
               }
   
               // cleanup
  @@ -1095,14 +1098,17 @@
                                   setScannerState(SCANNER_STATE_COMMENT);
                                   again = true;
                               }
  -                            /***
  -                            // REVISIT: Should we detect this?
  +                            else if (fEntityScanner.skipChar('/')) {
  +                                reportFatalError("MarkupNotRecognizedInMisc",
  +                                                 null);
  +                                again = true;
  +                            }
                               else if 
(XMLChar.isNameStart(fEntityScanner.peekChar())) {
                                   reportFatalError("MarkupNotRecognizedInMisc",
                                                    null);
  -                                // REVISIT: continue after fatal error
  +                                scanStartElement();
  +                                setScannerState(SCANNER_STATE_CONTENT);
                               }
  -                            /***/
                               else {
                                   reportFatalError("MarkupNotRecognizedInMisc",
                                                    null);
  @@ -1152,7 +1158,8 @@
                   //       end of file was reached prematurely.
                   if (fMarkupDepth != 0) {
                       reportFatalError("PrematureEOF", null);
  -                    throw e;
  +                    return false;
  +                    //throw e;
                   }
   
                   setScannerState(SCANNER_STATE_TERMINATED);
  
  
  

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

Reply via email to