diff options
author | Rémi Verschelde <rverschelde@gmail.com> | 2020-06-08 13:05:09 +0200 |
---|---|---|
committer | Rémi Verschelde <rverschelde@gmail.com> | 2020-06-08 13:07:07 +0200 |
commit | c080ec5da220474a80789afa33cc4f5612cddb50 (patch) | |
tree | 8c753ac23e3ed3a99b9289b7ac6e6b81f609e821 /scene/resources | |
parent | 87b2d3f9cf2dee1f885eaba9d17215ecbcacf391 (diff) |
PackedScene: Prevent crash when root node has `parent` attribute
The crash happens further down when setting an invalid owner in
`Node::_set_owner_nocheck` but I couldn't figure out how to fix it.
But here the proper fix is to catch the invalid scene file early on
and fail loading it.
Part of #17372.
Diffstat (limited to 'scene/resources')
-rw-r--r-- | scene/resources/packed_scene.cpp | 3 |
1 files changed, 3 insertions, 0 deletions
diff --git a/scene/resources/packed_scene.cpp b/scene/resources/packed_scene.cpp index 058e89cf2e..cb201bc539 100644 --- a/scene/resources/packed_scene.cpp +++ b/scene/resources/packed_scene.cpp @@ -98,6 +98,9 @@ Node *SceneState::instance(GenEditState p_edit_state) const { } #endif parent = nparent; + } else { + // i == 0 is root node. Confirm that it doesn't have a parent defined. + ERR_FAIL_COND_V_MSG(n.parent != -1, nullptr, vformat("Invalid scene: root node %s cannot specify a parent node.", snames[n.name])); } Node *node = nullptr; |