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);