summaryrefslogtreecommitdiffstats
path: root/src/extension/system.cpp
diff options
context:
space:
mode:
authorAdib Taraben <theadib@gmail.com>2009-08-01 23:31:02 +0000
committertheadib <theadib@users.sourceforge.net>2009-08-01 23:31:02 +0000
commitd8d60c60ebeeefb068d9b68bf7d96f1f1f88518a (patch)
tree2e7873e7c4a96dec1e3bfa421a15e98592378c01 /src/extension/system.cpp
parentCleaning some code again (diff)
downloadinkscape-d8d60c60ebeeefb068d9b68bf7d96f1f1f88518a.tar.gz
inkscape-d8d60c60ebeeefb068d9b68bf7d96f1f1f88518a.zip
FIX 309856 353847: correctly advertise exception leads to error message dialogue
(bzr r8380)
Diffstat (limited to 'src/extension/system.cpp')
-rw-r--r--src/extension/system.cpp14
1 files changed, 13 insertions, 1 deletions
diff --git a/src/extension/system.cpp b/src/extension/system.cpp
index a7828d3fc..33ee544a1 100644
--- a/src/extension/system.cpp
+++ b/src/extension/system.cpp
@@ -277,7 +277,19 @@ save(Extension *key, SPDocument *doc, gchar const *filename, bool setextension,
doc->setModifiedSinceSave(false);
}
- omod->save(doc, fileName);
+ try {
+ omod->save(doc, fileName);
+ }
+ catch(...) {
+ // free used ressources
+ if ( !official) {
+ g_free(saved_output_extension);
+ g_free(saved_dataloss);
+ }
+ g_free(fileName);
+
+ throw Inkscape::Extension::Output::save_failed();
+ }
// If it is an unofficial save, set the modified attributes back to what they were.
if ( !official) {