You've already forked godot
mirror of
https://github.com/godotengine/godot.git
synced 2025-11-06 12:20:30 +00:00
Convert Object::cast_to() to the static version
Currently we rely on some undefined behavior when Object->cast_to() gets called with a Null pointer. This used to work fine with GCC < 6 but newer versions of GCC remove all codepaths in which the this pointer is Null. However, the non-static cast_to() was supposed to be null safe. This patch makes cast_to() Null safe and removes the now redundant Null checks where they existed. It is explained in this article: https://www.viva64.com/en/b/0226/
This commit is contained in:
@@ -334,14 +334,14 @@ static void _find_anim_sprites(Node *p_node, List<Node *> *r_nodes, Ref<SpriteFr
|
||||
return;
|
||||
|
||||
{
|
||||
AnimatedSprite *as = p_node->cast_to<AnimatedSprite>();
|
||||
AnimatedSprite *as = Object::cast_to<AnimatedSprite>(p_node);
|
||||
if (as && as->get_sprite_frames() == p_sfames) {
|
||||
r_nodes->push_back(p_node);
|
||||
}
|
||||
}
|
||||
|
||||
{
|
||||
AnimatedSprite3D *as = p_node->cast_to<AnimatedSprite3D>();
|
||||
AnimatedSprite3D *as = Object::cast_to<AnimatedSprite3D>(p_node);
|
||||
if (as && as->get_sprite_frames() == p_sfames) {
|
||||
r_nodes->push_back(p_node);
|
||||
}
|
||||
@@ -842,7 +842,7 @@ SpriteFramesEditor::SpriteFramesEditor() {
|
||||
void SpriteFramesEditorPlugin::edit(Object *p_object) {
|
||||
|
||||
frames_editor->set_undo_redo(&get_undo_redo());
|
||||
SpriteFrames *s = p_object->cast_to<SpriteFrames>();
|
||||
SpriteFrames *s = Object::cast_to<SpriteFrames>(p_object);
|
||||
if (!s)
|
||||
return;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user