[4suite-checkins] In 4Suite/Ft/Xml/src/domlette,
files expat_module.c
Jeremy Kloth
jkloth at 4suite.org
Tue Dec 19 17:57:11 MST 2006
Modified Files:
expat_module.c
Log Message:
Forward port changes from XML1_0-maint.
Updated XML1_0-maint-merge tag
ViewCVS diff:
http://cvs.4suite.org/viewcvs/4Suite/Ft/Xml/src/domlette/expat_module.c.diff?r1=1.114&r2=1.115
ViewCVS view:
http://cvs.4suite.org/viewcvs/4Suite/Ft/Xml/src/domlette/expat_module.c?rev=1.115&content-type=text/vnd.viewcvs-markup
Index: expat_module.c
===================================================================
RCS file: /var/local/cvsroot/4Suite/Ft/Xml/src/domlette/expat_module.c,v
retrieving revision 1.114
retrieving revision 1.115
diff -U2 -r1.114 -r1.115
--- expat_module.c 19 Dec 2006 00:36:07 -0000 1.114
+++ expat_module.c 20 Dec 2006 00:57:10 -0000 1.115
@@ -1855,4 +1855,40 @@
}
+static void popElementState(ExpatParser parser)
+{
+ PyObject *temp;
+
+ temp = Stack_Pop(parser->xml_base_stack);
+ Py_DECREF(temp);
+
+ temp = Stack_Pop(parser->xml_lang_stack);
+ Py_DECREF(temp);
+
+ temp = Stack_Pop(parser->xml_space_stack);
+ Py_DECREF(temp);
+
+ temp = Stack_Pop(parser->preserve_whitespace_stack);
+ Py_DECREF(temp);
+}
+
+static ExpatStatus validateEndElement(ExpatParser parser,
+ const XML_Char *name)
+{
+ ExpatExpandedName *expanded_name;
+
+ switch (Validator_EndElement(parser->context->dtd->validator)) {
+ case 0:
+ expanded_name = makeExpandedName(parser, name);
+ if (expanded_name == NULL) {
+ return Expat_FatalError(parser);
+ }
+ return Expat_ReportError(parser, "INCOMPLETE_ELEMENT", "{sO}",
+ "element", expanded_name->qualifiedName);
+ case 1:
+ return EXPAT_STATUS_OK;
+ default:
+ return Expat_FatalError(parser);
+ }
+}
/** XInclude Processing ***********************************************/
@@ -2789,24 +2825,7 @@
}
if (Expat_HasFlag(parser, EXPAT_FLAG_VALIDATE)) {
- ExpatExpandedName *expanded_name;
- switch (Validator_EndElement(parser->context->dtd->validator)) {
- case 0:
- expanded_name = makeExpandedName(parser, name);
- if (expanded_name == NULL) {
- Expat_FatalError(parser);
- return;
- }
- if (Expat_ReportError(parser, "INCOMPLETE_ELEMENT", "{sO}",
- "element", expanded_name->qualifiedName)
- == EXPAT_STATUS_ERROR) {
- return;
- }
- case 1:
- break;
- default:
- Expat_FatalError(parser);
- return;
- }
+ if (validateEndElement(parser, name) == EXPAT_STATUS_ERROR) return;
}
+ popElementState(parser);
}
#ifdef DEBUG_XINCLUDE
@@ -3484,5 +3503,4 @@
ExpatStatus status;
ExpatExpandedName *expanded_name;
- PyObject *temp;
Debug_ParserFunctionCall(expat_EndElement, parser);
@@ -3503,17 +3521,5 @@
if (Expat_HasFlag(parser, EXPAT_FLAG_VALIDATE)) {
- switch (Validator_EndElement(parser->context->dtd->validator)) {
- case 0:
- if (Expat_ReportError(parser, "INCOMPLETE_ELEMENT", "{sO}",
- "element", expanded_name->qualifiedName)
- == EXPAT_STATUS_ERROR) {
- return;
- }
- case 1:
- break;
- default:
- Expat_FatalError(parser);
- return;
- }
+ if (validateEndElement(parser, name) == EXPAT_STATUS_ERROR) return;
}
@@ -3521,15 +3527,5 @@
if (status == EXPAT_STATUS_ERROR) Expat_FatalError(parser);
- temp = Stack_Pop(parser->xml_base_stack);
- Py_DECREF(temp);
-
- temp = Stack_Pop(parser->xml_lang_stack);
- Py_DECREF(temp);
-
- temp = Stack_Pop(parser->xml_space_stack);
- Py_DECREF(temp);
-
- temp = Stack_Pop(parser->preserve_whitespace_stack);
- Py_DECREF(temp);
+ popElementState(parser);
}
@@ -5108,4 +5104,7 @@
}
+ if (parser->context) {
+ destroyContexts(parser);
+ }
/* set after creation */
if (parser->whitespace_rules) {
More information about the 4suite-checkins
mailing list