Fix crash when clicking on "Interpolation Mode" with nonexistent node path

issue reference [https://github.com/godotengine/godot/issues/81769]

- adding a nullptr check on a Node pointer obtained from get_node(NodePath) in case it is null now we wont execute the next instruction

> ClassDB::get_property_info(nd->get_class(), prop, &prop_info);

Which then prevents the crash

(cherry picked from commit e7a35d1521)
This commit is contained in:
RealMadvicius 2023-10-07 11:03:13 +02:00 committed by Yuri Sizov
parent 5470eb5894
commit 8ed4af259a
1 changed files with 15 additions and 8 deletions

View File

@ -2694,7 +2694,13 @@ void AnimationTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
AnimationPlayer *ap = ape->get_player();
if (ap) {
NodePath npath = animation->track_get_path(track);
Node *nd = ap->get_node(ap->get_root())->get_node(NodePath(npath.get_concatenated_names()));
Node *a_ap_root_node = ap->get_node(ap->get_root());
Node *nd = nullptr;
// We must test that we have a valid a_ap_root_node before trying to access its content to init the nd Node.
if (a_ap_root_node) {
nd = a_ap_root_node->get_node(NodePath(npath.get_concatenated_names()));
}
if (nd) {
StringName prop = npath.get_concatenated_subnames();
PropertyInfo prop_info;
ClassDB::get_property_info(nd->get_class(), prop, &prop_info);
@ -2705,6 +2711,7 @@ void AnimationTrackEdit::gui_input(const Ref<InputEvent> &p_event) {
}
}
}
}
menu->reset_size();
Vector2 popup_pos = get_screen_position() + interp_mode_rect.position + Vector2(0, interp_mode_rect.size.height);