diff options
| author | Johan B. C. Engelen <jbc.engelen@swissonline.ch> | 2009-03-03 20:30:55 +0000 |
|---|---|---|
| committer | johanengelen <johanengelen@users.sourceforge.net> | 2009-03-03 20:30:55 +0000 |
| commit | af4c64fbb06e519efbfbc3aa2dee3c6e45cbfd97 (patch) | |
| tree | 1ddd60cc8782372a34f8e8cbb1cffac70705a2f6 /src | |
| parent | minor code cleanup (diff) | |
| download | inkscape-af4c64fbb06e519efbfbc3aa2dee3c6e45cbfd97.tar.gz inkscape-af4c64fbb06e519efbfbc3aa2dee3c6e45cbfd97.zip | |
fix crash bug 195312
(bzr r7405)
Diffstat (limited to 'src')
| -rw-r--r-- | src/filters/image.cpp | 20 |
1 files changed, 11 insertions, 9 deletions
diff --git a/src/filters/image.cpp b/src/filters/image.cpp index 32afe5db6..eda815d8d 100644 --- a/src/filters/image.cpp +++ b/src/filters/image.cpp @@ -140,7 +140,6 @@ sp_feImage_set(SPObject *object, unsigned int key, gchar const *value) { SPFeImage *feImage = SP_FEIMAGE(object); (void)feImage; - Inkscape::URI *SVGElem_uri = NULL; switch(key) { /*DEAL WITH SETTING ATTRIBUTES HERE*/ case SP_ATTR_XLINK_HREF: @@ -150,16 +149,19 @@ sp_feImage_set(SPObject *object, unsigned int key, gchar const *value) feImage->href = (value) ? g_strdup (value) : NULL; if (!feImage->href) return; try{ - SVGElem_uri = new Inkscape::URI(feImage->href); + Inkscape::URI SVGElem_uri(feImage->href); feImage->SVGElemRef = new Inkscape::URIReference(feImage->document); feImage->from_element = true; - feImage->SVGElemRef->attach(*SVGElem_uri); - feImage->SVGElem = SP_ITEM(feImage->SVGElemRef->getObject()); - - delete SVGElem_uri; - feImage->_modified_connection = ((SPObject*) feImage->SVGElem)->connectModified(sigc::bind(sigc::ptr_fun(&sp_feImage_elem_modified), object)); - object->requestModified(SP_OBJECT_MODIFIED_FLAG); - break; + feImage->SVGElemRef->attach(SVGElem_uri); + if (SPObject *elemref = feImage->SVGElemRef->getObject()) { + feImage->SVGElem = SP_ITEM(elemref); + + feImage->_modified_connection = ((SPObject*) feImage->SVGElem)->connectModified(sigc::bind(sigc::ptr_fun(&sp_feImage_elem_modified), object)); + object->requestModified(SP_OBJECT_MODIFIED_FLAG); + break; + } else { + g_warning("SVG element URI was not found in the document while loading feImage"); + } } catch(const Inkscape::UnsupportedURIException & e) { |
