summaryrefslogtreecommitdiffstats
path: root/src/extension/implementation/xslt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/extension/implementation/xslt.cpp')
-rw-r--r--src/extension/implementation/xslt.cpp11
1 files changed, 10 insertions, 1 deletions
diff --git a/src/extension/implementation/xslt.cpp b/src/extension/implementation/xslt.cpp
index c929ba19a..8b6e6c701 100644
--- a/src/extension/implementation/xslt.cpp
+++ b/src/extension/implementation/xslt.cpp
@@ -29,6 +29,7 @@
#include <libxml/parser.h>
#include <libxslt/transform.h>
+#include <libxslt/xsltutils.h>
Inkscape::XML::Document * sp_repr_do_read (xmlDocPtr doc, const gchar * default_ns);
@@ -217,11 +218,19 @@ XSLT::save(Inkscape::Extension::Output */*module*/, SPDocument *doc, gchar const
params[0] = NULL;
xmlDocPtr newdoc = xsltApplyStylesheet(_stylesheet, svgdoc, params);
- xmlSaveFile(filename, newdoc);
+ //xmlSaveFile(filename, newdoc);
+ int success = xsltSaveResultToFilename(filename, newdoc, _stylesheet, 0);
xmlFreeDoc(newdoc);
xmlFreeDoc(svgdoc);
+ xsltCleanupGlobals();
+ xmlCleanupParser();
+
+ if (success < 1) {
+ throw Inkscape::Extension::Output::save_failed();
+ }
+
return;
}