diff options
author | Daniel Veillard <veillard@redhat.com> | 2014-06-11 16:59:16 +0800 |
---|---|---|
committer | Daniel Veillard <veillard@redhat.com> | 2014-06-11 17:00:39 +0800 |
commit | c35af8b18dddd0bdfb137ad6a056837a3d5ea651 (patch) | |
tree | 734ea3cfa462a9c2999116059aba0ca7cb7e20d5 | |
parent | dd8367da17c2948981a51e52c8a6beb445edf825 (diff) | |
download | libxml2-c35af8b18dddd0bdfb137ad6a056837a3d5ea651.tar.gz |
Fixes for xmlInitParserCtxt
let's make sure that parser options are updated too when a corrsponding
global variable or other field of the context is set.
-rw-r--r-- | parserInternals.c | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/parserInternals.c b/parserInternals.c index 98a58364..df204fde 100644 --- a/parserInternals.c +++ b/parserInternals.c @@ -1691,12 +1691,20 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt) ctxt->nsWellFormed = 1; ctxt->valid = 1; ctxt->loadsubset = xmlLoadExtDtdDefaultValue; + if (ctxt->loadsubset) { + ctxt->options |= XML_PARSE_DTDLOAD; + } ctxt->validate = xmlDoValidityCheckingDefaultValue; ctxt->pedantic = xmlPedanticParserDefaultValue; + if (ctxt->pedantic) { + ctxt->options |= XML_PARSE_PEDANTIC; + } ctxt->linenumbers = xmlLineNumbersDefaultValue; ctxt->keepBlanks = xmlKeepBlanksDefaultValue; - if (ctxt->keepBlanks == 0) + if (ctxt->keepBlanks == 0) { ctxt->sax->ignorableWhitespace = xmlSAX2IgnorableWhitespace; + ctxt->options |= XML_PARSE_NOBLANKS; + } ctxt->vctxt.finishDtd = XML_CTXT_FINISH_DTD_0; ctxt->vctxt.userData = ctxt; @@ -1708,8 +1716,12 @@ xmlInitParserCtxt(xmlParserCtxtPtr ctxt) else ctxt->vctxt.warning = xmlParserValidityWarning; ctxt->vctxt.nodeMax = 0; + ctxt->options |= XML_PARSE_DTDVALID; } ctxt->replaceEntities = xmlSubstituteEntitiesDefaultValue; + if (ctxt->replaceEntities) { + ctxt->options |= XML_PARSE_NOENT; + } ctxt->record_info = 0; ctxt->nbChars = 0; ctxt->checkIndex = 0; |