X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=synfig-core%2Ftrunk%2Fsrc%2Fsynfig%2Fcanvas.cpp;h=c51507a0607fe11505b72b3b832cbe58cca3841d;hb=3f11cd07d0b39fbd614ca1f8b0eb903dc5571fc8;hp=fcf8935b63facd8c8b2e388afe360b2cde4ad5c9;hpb=36956f8ebab84ea17b75d3f06b3fd509d8fc79ff;p=synfig.git diff --git a/synfig-core/trunk/src/synfig/canvas.cpp b/synfig-core/trunk/src/synfig/canvas.cpp index fcf8935..c51507a 100644 --- a/synfig-core/trunk/src/synfig/canvas.cpp +++ b/synfig-core/trunk/src/synfig/canvas.cpp @@ -90,6 +90,19 @@ Canvas::on_changed() Canvas::~Canvas() { + // we were having a crash where pastecanvas layers were still + // refering to a canvas after it had been destroyed; this code + // will stop the pastecanvas layers from refering to the canvas + // before the canvas is destroyed + for (std::set::iterator iter = parent_set.begin(); iter != parent_set.end(); iter++) + { + Layer_PasteCanvas* paste_canvas = dynamic_cast(*iter); + if(paste_canvas) + paste_canvas->set_sub_canvas(0); + else + warning("destroyed canvas has a parent that is not a pastecanvas - please report if repeatable"); + } + //if(is_inline() && parent_) assert(0); _CanvasCounter::counter--; clear();