diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2007-12-28 16:32:23 +0000 |
|---|---|---|
| committer | johanengelen <johanengelen@users.sourceforge.net> | 2007-12-28 16:32:23 +0000 |
| commit | 002d4f28e4289bf566b050ac1da3e2380175a9ea (patch) | |
| tree | 61b82da43fa60c905c049bac43582cec56d1e4d0 /src | |
| parent | fix Bug #177891 feGaussianBlur crashes when setting fill paint as input (diff) | |
| download | inkscape-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.cpp | 24 |
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); |
