Branch: refs/heads/master
  Home:   https://github.com/synfig/synfig
  Commit: d0dba5bd7aaa2ec3008b26050a0f73565d986b04
      
https://github.com/synfig/synfig/commit/d0dba5bd7aaa2ec3008b26050a0f73565d986b04
  Author: ice0 <konop...@gmail.com>
  Date:   2023-03-27 (Mon, 27 Mar 2023)

  Changed paths:
    M synfig-core/src/synfig/valuenodes/valuenode_bone.cpp

  Log Message:
  -----------
  fix: a crash on program exit if bones were used (#3037)

`ValueNode_Bone_Root` does not have a GUID and does not belong to
any canvas. Calling `get_guid()` for `ValueNode_Bone_Root` leads to
an attempt to insert it into a canvas (it calls `global_node_map()` for
this purpose).
And if `global_node_map()` is already destroyed at that moment, it
leads to a crash.

Since `ValueNode_Bone_Root` is also a static variable, it can be
destroyed later than `global_node_map()`.
I moved this variable inside `get_root_bone()` method, which changed
the initialization and destruction order.

I also added a check for `is_root()` for more correct behavior.




_______________________________________________
Synfig-devl mailing list
Synfig-devl@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/synfig-devl

Reply via email to