summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorTavmjong Bah <tavmjong@free.fr>2014-10-12 12:19:49 +0000
committertavmjong-free <tavmjong@free.fr>2014-10-12 12:19:49 +0000
commitbe65f03b5b02746d3d21b5e905663d3264226321 (patch)
tree1537263bf099c43bb85eef02540d5b3170cedb26 /src
parentFix "Access to field 'image_out' results in a dereference of a null pointer" (diff)
downloadinkscape-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.cpp25
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));