summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorJohan B. C. Engelen <jbc.engelen@swissonline.ch>2007-12-28 16:32:23 +0000
committerjohanengelen <johanengelen@users.sourceforge.net>2007-12-28 16:32:23 +0000
commit002d4f28e4289bf566b050ac1da3e2380175a9ea (patch)
tree61b82da43fa60c905c049bac43582cec56d1e4d0 /src
parentfix Bug #177891 feGaussianBlur crashes when setting fill paint as input (diff)
downloadinkscape-002d4f28e4289bf566b050ac1da3e2380175a9ea.tar.gz
inkscape-002d4f28e4289bf566b050ac1da3e2380175a9ea.zip
try to fix bug #174475 feImage renderer crashes on non-external image
(bzr r4326)
Diffstat (limited to 'src')
-rw-r--r--src/display/nr-filter-image.cpp24
1 files changed, 19 insertions, 5 deletions
diff --git a/src/display/nr-filter-image.cpp b/src/display/nr-filter-image.cpp
index 312e85404..2d32cc51a 100644
--- a/src/display/nr-filter-image.cpp
+++ b/src/display/nr-filter-image.cpp
@@ -35,11 +35,25 @@ int FilterImage::render(FilterSlot &slot, FilterUnits const &/*units*/) {
if (!feImageHref) return 0;
if (!image_pixbuf){
- if ( (image = Gdk::Pixbuf::create_from_file(feImageHref)) < 0 ) return 0;
- width = image->get_width();
- height = image->get_height();
- rowstride = image->get_rowstride();
- image_pixbuf = image->get_pixels();
+ try {
+ image = Gdk::Pixbuf::create_from_file(feImageHref);
+ }
+ catch (const Glib::FileError & e)
+ {
+ g_warning("caught Glib::FileError in FilterImage::render");
+ return 0;
+ }
+ catch (const Gdk::PixbufError & e)
+ {
+ g_warning("Gdk::PixbufError in FilterImage::render");
+ return 0;
+ }
+ if ( !image ) return 0;
+
+ width = image->get_width();
+ height = image->get_height();
+ rowstride = image->get_rowstride();
+ image_pixbuf = image->get_pixels();
}
int w,x,y;
NRPixBlock *in = slot.get(_input);