diff options
| author | Tavmjong Bah <tavmjong@free.fr> | 2014-10-12 12:19:49 +0000 |
|---|---|---|
| committer | tavmjong-free <tavmjong@free.fr> | 2014-10-12 12:19:49 +0000 |
| commit | be65f03b5b02746d3d21b5e905663d3264226321 (patch) | |
| tree | 1537263bf099c43bb85eef02540d5b3170cedb26 /src | |
| parent | Fix "Access to field 'image_out' results in a dereference of a null pointer" (diff) | |
| download | inkscape-be65f03b5b02746d3d21b5e905663d3264226321.tar.gz inkscape-be65f03b5b02746d3d21b5e905663d3264226321.zip | |
Fix "Access to field 'image_out' results in a dereference of a null pointer"
(bzr r13597)
Diffstat (limited to 'src')
| -rw-r--r-- | src/filters/displacementmap.cpp | 25 |
1 files changed, 15 insertions, 10 deletions
diff --git a/src/filters/displacementmap.cpp b/src/filters/displacementmap.cpp index 473e4913f..7dedfc031 100644 --- a/src/filters/displacementmap.cpp +++ b/src/filters/displacementmap.cpp @@ -202,25 +202,30 @@ Inkscape::XML::Node* SPFeDisplacementMap::write(Inkscape::XML::Document *doc, In repr = doc->createElement("svg:feDisplacementMap"); } - gchar const *out_name = sp_filter_name_for_image(parent, this->in2); - if (out_name) { - repr->setAttribute("in2", out_name); - } else { + gchar const *in2_name = sp_filter_name_for_image(parent, this->in2); + + if( !in2_name ) { + + // This code is very similar to sp_filter_primtive_name_previous_out() SPObject *i = parent->children; + // Find previous filter primitive while (i && i->next != this) { i = i->next; } - SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); - out_name = sp_filter_name_for_image(parent, i_prim->image_out); - repr->setAttribute("in2", out_name); - - if (!out_name) { - g_warning("Unable to set in2 for feDisplacementMap"); + if( i ) { + SPFilterPrimitive *i_prim = SP_FILTER_PRIMITIVE(i); + in2_name = sp_filter_name_for_image(parent, i_prim->image_out); } } + if (in2_name) { + repr->setAttribute("in2", in2_name); + } else { + g_warning("Unable to set in2 for feDisplacementMap"); + } + sp_repr_set_svg_double(repr, "scale", this->scale); repr->setAttribute("xChannelSelector", get_channelselector_name(this->xChannelSelector)); |
