summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorCarl Hetherington <cth@carlh.net>2006-01-23 14:19:27 +0000
committercth103 <cth103@users.sourceforge.net>2006-01-23 14:19:27 +0000
commit88a8b1c9b15c12ff99ffc0f9c387ad1a1bdca813 (patch)
treee9bbd7451de9f040b51c2408db0e3307558fc233
parentAdd .a files to svn:ignore property. (diff)
downloadinkscape-88a8b1c9b15c12ff99ffc0f9c387ad1a1bdca813.tar.gz
inkscape-88a8b1c9b15c12ff99ffc0f9c387ad1a1bdca813.zip
Catch failures in fopen of XML files. Fixes #1374551.
(bzr r23)
-rw-r--r--ChangeLog3
-rw-r--r--src/xml/repr-io.cpp17
2 files changed, 17 insertions, 3 deletions
diff --git a/ChangeLog b/ChangeLog
index d856ba05b..18df22f3f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -3,6 +3,9 @@
* src/selection.cpp: fix a typo in one of my previous commits.
Closes #1401357.
+ * src/xml/repr-io.cpp: catch failures in fopen of XML files.
+ Closes #1374551.
+
2006-01-20 Michael Wybrow <mjwybrow@users.sourceforge.net>
* src/widgets/toolbox.cpp, src/widgets/desktop-widget.cpp,
diff --git a/src/xml/repr-io.cpp b/src/xml/repr-io.cpp
index 02aca4dc6..bb62393fc 100644
--- a/src/xml/repr-io.cpp
+++ b/src/xml/repr-io.cpp
@@ -16,7 +16,7 @@
# include <config.h>
#endif
-
+#include <stdexcept>
#include "xml/repr.h"
#include "xml/attribute-record.h"
@@ -80,9 +80,13 @@ private:
Inkscape::IO::GzipInputStream* gzin;
};
-void XmlSource::setFile( char const * filename ) {
+void XmlSource::setFile(char const *filename)
+{
this->filename = filename;
fp = Inkscape::IO::fopen_utf8name(filename, "r");
+ if (fp == NULL) {
+ throw std::runtime_error("Could not open file for reading");
+ }
first = true;
}
@@ -214,7 +218,14 @@ sp_repr_read_file (const gchar * filename, const gchar *default_ns)
Inkscape::IO::dump_fopen_call( filename, "N" );
XmlSource src;
- src.setFile(filename);
+ try
+ {
+ src.setFile(filename);
+ }
+ catch (...)
+ {
+ return NULL;
+ }
xmlDocPtr doubleDoc = xmlReadIO( XmlSource::readCb,
XmlSource::closeCb,