[webkit-changes] cvs commit: WebCore/khtml/xml xml_tokenizer.cpp
Anders
andersca at opensource.apple.com
Fri Jan 6 02:39:56 PST 2006
andersca 06/01/06 02:39:56
Modified: . ChangeLog
khtml/xml xml_tokenizer.cpp
Log:
2006-01-06 Anders Carlsson <andersca at mac.com>
Reviewed by Eric.
- fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5142
parseXMLDocumentFragment can't parse fragments correctly
* khtml/xml/xml_tokenizer.cpp:
(khtml::balancedStartElementNsHandler):
(khtml::balancedEndElementNsHandler):
(khtml::balancedCharactersHandler):
(khtml::balancedProcessingInstructionHandler):
(khtml::balancedCdataBlockHandler):
(khtml::balancedCommentHandler):
(khtml::balancedWarningHandler):
Add handlers.
(khtml::parseXMLDocumentFragment):
Change back into using xmlParseBalancedChunkMemory.
Revision Changes Path
1.92 +20 -0 WebCore/ChangeLog
Index: ChangeLog
===================================================================
RCS file: /cvs/root/WebCore/ChangeLog,v
retrieving revision 1.91
retrieving revision 1.92
diff -u -r1.91 -r1.92
--- ChangeLog 6 Jan 2006 09:09:57 -0000 1.91
+++ ChangeLog 6 Jan 2006 10:39:55 -0000 1.92
@@ -1,3 +1,23 @@
+2006-01-06 Anders Carlsson <andersca at mac.com>
+
+ Reviewed by Eric.
+
+ - fix http://bugzilla.opendarwin.org/show_bug.cgi?id=5142
+ parseXMLDocumentFragment can't parse fragments correctly
+
+ * khtml/xml/xml_tokenizer.cpp:
+ (khtml::balancedStartElementNsHandler):
+ (khtml::balancedEndElementNsHandler):
+ (khtml::balancedCharactersHandler):
+ (khtml::balancedProcessingInstructionHandler):
+ (khtml::balancedCdataBlockHandler):
+ (khtml::balancedCommentHandler):
+ (khtml::balancedWarningHandler):
+ Add handlers.
+
+ (khtml::parseXMLDocumentFragment):
+ Change back into using xmlParseBalancedChunkMemory.
+
2006-01-06 Alexander Kellett <lypanov at kde.org>
Reviewed by eseidel.
1.63 +49 -13 WebCore/khtml/xml/xml_tokenizer.cpp
Index: xml_tokenizer.cpp
===================================================================
RCS file: /cvs/root/WebCore/khtml/xml/xml_tokenizer.cpp,v
retrieving revision 1.62
retrieving revision 1.63
diff -u -r1.62 -r1.63
--- xml_tokenizer.cpp 30 Dec 2005 05:43:23 -0000 1.62
+++ xml_tokenizer.cpp 6 Jan 2006 10:39:55 -0000 1.63
@@ -914,27 +914,63 @@
xmlStopParser(m_context);
}
+static void balancedStartElementNsHandler(void *closure, const xmlChar *localname, const xmlChar *prefix, const xmlChar *uri, int nb_namespaces, const xmlChar **namespaces, int nb_attributes, int nb_defaulted, const xmlChar **libxmlAttributes)
+{
+ static_cast<XMLTokenizer *>(closure)->startElementNs(localname, prefix, uri, nb_namespaces, namespaces, nb_attributes, nb_defaulted, libxmlAttributes);
+}
+
+static void balancedEndElementNsHandler(void *closure, const xmlChar *localname, const xmlChar *prefix, const xmlChar *uri)
+{
+ static_cast<XMLTokenizer *>(closure)->endElementNs();
+}
+
+static void balancedCharactersHandler(void *closure, const xmlChar *s, int len)
+{
+ static_cast<XMLTokenizer *>(closure)->characters(s, len);
+}
+
+static void balancedProcessingInstructionHandler(void *closure, const xmlChar *target, const xmlChar *data)
+{
+ static_cast<XMLTokenizer *>(closure)->processingInstruction(target, data);
+}
+
+static void balancedCdataBlockHandler(void *closure, const xmlChar *s, int len)
+{
+ static_cast<XMLTokenizer *>(closure)->cdataBlock(s, len);
+}
+
+static void balancedCommentHandler(void *closure, const xmlChar *comment)
+{
+ static_cast<XMLTokenizer *>(closure)->comment(comment);
+}
+
+static void balancedWarningHandler(void *closure, const char *message, ...)
+{
+ va_list args;
+ va_start(args, message);
+ static_cast<XMLTokenizer *>(closure)->error(XMLTokenizer::warning, message, args);
+ va_end(args);
+}
+
bool parseXMLDocumentFragment(const DOMString &string, DocumentFragmentImpl *fragment, ElementImpl *parent)
{
XMLTokenizer tokenizer(fragment, parent);
xmlSAXHandler sax;
memset(&sax, 0, sizeof(sax));
- sax.characters = charactersHandler;
- sax.processingInstruction = processingInstructionHandler;
- sax.startElementNs = startElementNsHandler;
- sax.endElementNs = endElementNsHandler;
- sax.cdataBlock = cdataBlockHandler;
- sax.comment = commentHandler;
- sax.warning = warningHandler;
+
+ sax.characters = balancedCharactersHandler;
+ sax.processingInstruction = balancedProcessingInstructionHandler;
+ sax.startElementNs = balancedStartElementNsHandler;
+ sax.endElementNs = balancedEndElementNsHandler;
+ sax.cdataBlock = balancedCdataBlockHandler;
+ sax.ignorableWhitespace = balancedCdataBlockHandler;
+ sax.comment = balancedCommentHandler;
+ sax.warning = balancedWarningHandler;
sax.initialized = XML_SAX2_MAGIC;
- xmlParserCtxtPtr parser = createQStringParser(&sax, &tokenizer);
- int result = parseQString(parser, string.qstring());
- if (parser->myDoc)
- xmlFreeDoc(parser->myDoc);
- xmlFreeParserCtxt(parser);
-
+ int result = xmlParseBalancedChunkMemory(0, &sax, &tokenizer, 0,
+ (const xmlChar*)(const char*)(string.qstring().utf8()), 0);
return result == 0;
}
More information about the webkit-changes
mailing list