X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;ds=sidebyside;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fsavecanvas.cpp;h=6129f7120f9a18805f09fe182e1c97986fa91f3f;hb=710af67b5341a2be2c920ce04d16e8c598fb43b7;hp=91f5dfa9c06fb17b1da20c9668b23c87020dd22a;hpb=bbf05c1d5f53f61ec5b033c5c305a497d8389d46;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/savecanvas.cpp b/synfig-core/trunk/src/synfig/savecanvas.cpp index 91f5dfa..6129f71 100644 --- a/synfig-core/trunk/src/synfig/savecanvas.cpp +++ b/synfig-core/trunk/src/synfig/savecanvas.cpp @@ -563,7 +563,7 @@ xmlpp::Element* encode_layer(xmlpp::Element* root,Layer::ConstHandle layer) handle value_node=dynamic_param_list.find(iter->get_name())->second; - // If the valuenode.has no ID, then it must be defined in-place + // If the valuenode has no ID, then it must be defined in-place if(value_node->get_id().empty()) { encode_value_node(node->add_child("value_node"),value_node,layer->get_canvas().constant()); @@ -583,16 +583,25 @@ xmlpp::Element* encode_layer(xmlpp::Element* root,Layer::ConstHandle layer) continue; } - if(value.get_type()==ValueBase::TYPE_CANVAS && !value.get(Canvas::LooseHandle())->is_inline()) + if(value.get_type()==ValueBase::TYPE_CANVAS) { - Canvas::Handle child(value.get(Canvas::LooseHandle())); + // the ->is_inline() below was crashing if the canvas + // contained a PasteCanvas with the default Canvas setting; this avoids the crash + if (!value.get(Canvas::LooseHandle())) + continue; + + if (!value.get(Canvas::LooseHandle())->is_inline()) + { + Canvas::Handle child(value.get(Canvas::LooseHandle())); - if(!value.get(Canvas::Handle())) + if(!value.get(Canvas::Handle())) + continue; + xmlpp::Element *node=root->add_child("param"); + node->set_attribute("name",iter->get_name()); + node->set_attribute("use",child->get_relative_id(layer->get_canvas())); continue; - xmlpp::Element *node=root->add_child("param"); - node->set_attribute("name",iter->get_name()); - node->set_attribute("use",child->get_relative_id(layer->get_canvas())); - continue; + } } xmlpp::Element *node=root->add_child("param"); node->set_attribute("name",iter->get_name());