diff options
Diffstat (limited to 'project2/xml/transformHtml.cpp')
| -rw-r--r-- | project2/xml/transformHtml.cpp | 14 |
1 files changed, 13 insertions, 1 deletions
diff --git a/project2/xml/transformHtml.cpp b/project2/xml/transformHtml.cpp index e280f27..f032945 100644 --- a/project2/xml/transformHtml.cpp +++ b/project2/xml/transformHtml.cpp @@ -8,10 +8,18 @@ HtmlDocument::HtmlDocument(ScriptNodePtr s) : TransformSource(s), SourceOf<HtmlDocument>(s), SourceOf<WritableContent>(s), + doc(NULL), contentType(s, "contenttype", "text/html") { } +HtmlDocument::~HtmlDocument() +{ + if (doc) { + xmlFreeDoc(doc); + } +} + HtmlDocument::operator const HtmlDocument * () const { return this; } HtmlDocument::operator const WritableContent * () const { return this; } @@ -55,8 +63,12 @@ class TransformXmlToHtml : public TransformImpl<xmlpp::Document, HtmlDocument> { if (!cur) { throw xmlpp::exception("Failed to load stylesheet"); } + if (result->doc) { + xmlFreeDoc(result->doc); + result->doc = NULL; + } result->doc = xsltApplyStylesheet(cur.get(), data->cobj(), NULL); - if (!result) { + if (!result->doc) { throw xmlpp::exception("Failed to perform transformation"); } } |
