You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@xerces.apache.org by le...@locus.apache.org on 2000/11/14 23:45:41 UTC

cvs commit: xml-xerces/java/src/org/apache/xerces/impl XMLDocumentScanner.java XMLScanner.java

lehors      00/11/14 14:45:40

  Modified:    java/src/org/apache/xerces/impl Tag: xerces_j_2
                        XMLDocumentScanner.java XMLScanner.java
  Log:
  surrogates weren't handled everywhere
  
  Revision  Changes    Path
  No                   revision
  
  
  No                   revision
  
  
  1.1.2.73  +18 -9     xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLDocumentScanner.java
  
  Index: XMLDocumentScanner.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLDocumentScanner.java,v
  retrieving revision 1.1.2.72
  retrieving revision 1.1.2.73
  diff -u -r1.1.2.72 -r1.1.2.73
  --- XMLDocumentScanner.java	2000/11/09 22:36:57	1.1.2.72
  +++ XMLDocumentScanner.java	2000/11/14 22:45:37	1.1.2.73
  @@ -106,7 +106,7 @@
    * @author Andy Clark, IBM
    * @author Arnaud  Le Hors, IBM
    *
  - * @version $Id: XMLDocumentScanner.java,v 1.1.2.72 2000/11/09 22:36:57 lehors Exp $
  + * @version $Id: XMLDocumentScanner.java,v 1.1.2.73 2000/11/14 22:45:37 lehors Exp $
    */
   public class XMLDocumentScanner
       extends XMLScanner
  @@ -915,15 +915,24 @@
                   }
               }
               else {
  -                int c = fEntityScanner.peekChar();
  -                if (c != -1 && XMLChar.isInvalid(c)) {
  -                    reportFatalError("InvalidCharInCDSect",
  -                                     new Object[] {Integer.toString(c, 16)});
  -                    fEntityScanner.scanChar();
  -                }
                   if (fDocumentHandler != null) {
                       fDocumentHandler.characters(fString);
                   }
  +                int c = fEntityScanner.peekChar();
  +                if (c != -1) {
  +                    if (XMLChar.isHighSurrogate(c)) {
  +                        fStringBuffer.clear();
  +                        scanSurrogates(fStringBuffer);
  +                        if (fDocumentHandler != null) {
  +                            fDocumentHandler.characters(fStringBuffer);
  +                        }
  +                    }
  +                    else if (XMLChar.isInvalid(c)) {
  +                        reportFatalError("InvalidCharInCDSect",
  +                                         new Object[]{Integer.toString(c,16)});
  +                        fEntityScanner.scanChar();
  +                    }
  +                }
               }
           }
           fMarkupDepth--;
  @@ -1570,7 +1579,6 @@
                                           // special case: we have surrogates
                                           fStringBuffer.clear();
                                           if (scanSurrogates(fStringBuffer)) {
  -
                                               // call handler
                                               if (fDocumentHandler != null) {
                                                   fDocumentHandler.characters(fStringBuffer);
  @@ -1579,7 +1587,8 @@
                                       }
                                       else if (c != -1 && XMLChar.isInvalid(c)) {
                                           reportFatalError("InvalidCharInContent",
  -                                                         new Object[] {Integer.toString(c, 16)});
  +                                                         new Object[] {
  +                                                             Integer.toString(c, 16)});
                                           fEntityScanner.scanChar();
                                       }
                                   } while (complete);
  
  
  
  1.1.2.37  +22 -9     xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLScanner.java
  
  Index: XMLScanner.java
  ===================================================================
  RCS file: /home/cvs/xml-xerces/java/src/org/apache/xerces/impl/Attic/XMLScanner.java,v
  retrieving revision 1.1.2.36
  retrieving revision 1.1.2.37
  diff -u -r1.1.2.36 -r1.1.2.37
  --- XMLScanner.java	2000/11/11 03:00:08	1.1.2.36
  +++ XMLScanner.java	2000/11/14 22:45:37	1.1.2.37
  @@ -93,7 +93,7 @@
    * @author Andy Clark, IBM
    * @author Arnaud  Le Hors, IBM
    *
  - * @version $Id: XMLScanner.java,v 1.1.2.36 2000/11/11 03:00:08 lehors Exp $
  + * @version $Id: XMLScanner.java,v 1.1.2.37 2000/11/14 22:45:37 lehors Exp $
    */
   public abstract class XMLScanner 
       implements XMLComponent {
  @@ -446,6 +446,9 @@
                       if (c == '&' || c == '%' || c == '<' || c == ']') {
                           fStringBuffer2.append((char)fEntityScanner.scanChar());
                       }
  +                    else if (XMLChar.isHighSurrogate(c)) {
  +                        scanSurrogates(fStringBuffer2);
  +                    }
                       else if (XMLChar.isInvalid(c)) {
                           String key = scanningTextDecl
                               ? "InvalidCharInTextDecl" : "InvalidCharInXMLDecl";
  @@ -536,10 +539,15 @@
               do {
                   fStringBuffer.append(data);
                   int c = fEntityScanner.peekChar();
  -                if (c != -1 && XMLChar.isInvalid(c)) {
  -                    reportFatalError("InvalidCharInPI",
  -                                     new Object[] { Integer.toHexString(c) });
  -                    fEntityScanner.scanChar();
  +                if (c != -1) {
  +                    if (XMLChar.isHighSurrogate(c)) {
  +                        scanSurrogates(fStringBuffer);
  +                    }
  +                    else if (XMLChar.isInvalid(c)) {
  +                        reportFatalError("InvalidCharInPI",
  +                                         new Object[]{Integer.toHexString(c)});
  +                        fEntityScanner.scanChar();
  +                    }
                   }
               } while (fEntityScanner.scanData("?>", data));
               fStringBuffer.append(data);
  @@ -571,10 +579,15 @@
               text.append(fString);
               /***/
               int c = fEntityScanner.peekChar();
  -            if (XMLChar.isInvalid(c)) {
  -                reportFatalError("InvalidCharInComment",
  -                                 new Object[] { Integer.toHexString(c) }); 
  -                fEntityScanner.scanChar();
  +            if (c != -1) {
  +                if (XMLChar.isHighSurrogate(c)) {
  +                    scanSurrogates(text);
  +                }
  +                if (XMLChar.isInvalid(c)) {
  +                    reportFatalError("InvalidCharInComment",
  +                                     new Object[] { Integer.toHexString(c) }); 
  +                    fEntityScanner.scanChar();
  +                }
               }
           }
           text.append(fString);