From 88a8b1c9b15c12ff99ffc0f9c387ad1a1bdca813 Mon Sep 17 00:00:00 2001 From: Carl Hetherington Date: Mon, 23 Jan 2006 14:19:27 +0000 Subject: Catch failures in fopen of XML files. Fixes #1374551. (bzr r23) --- src/xml/repr-io.cpp | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) (limited to 'src/xml') 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 #endif - +#include #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, -- cgit v1.2.3