summaryrefslogtreecommitdiff
path: root/project2/xml/transformHtml.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'project2/xml/transformHtml.cpp')
-rw-r--r--project2/xml/transformHtml.cpp14
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");
}
}