// 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<Node*>::iterator iter = parent_set.begin(); iter != parent_set.end(); iter++)
+
+ // the set_sub_canvas(0) ends up deleting the parent-child link,
+ // which deletes the current element from the set we're iterating
+ // through, so we have to make sure we've incremented the iterator
+ // before we mess with the pastecanvas
+ std::set<Node*>::iterator iter = parent_set.begin();
+ while (iter != parent_set.end())
{
Layer_PasteCanvas* paste_canvas = dynamic_cast<Layer_PasteCanvas*>(*iter);
+ iter++;
if(paste_canvas)
paste_canvas->set_sub_canvas(0);
else