Add missing initializations for Node3DEditor.

Do not try to format fields with garbage values in _snap_update()
Initialize grid_enable[] before use.
Initialize previewing_camera before use.
These are all cases found live, with valgrind.
Fixes #76925
This commit is contained in:
Bram Stolk 2023-05-10 13:23:55 -07:00
parent fd4a06c515
commit 4bc513edbc
2 changed files with 5 additions and 7 deletions

View file

@ -8382,8 +8382,6 @@ Node3DEditor::Node3DEditor() {
snap_scale->set_select_all_on_focus(true); snap_scale->set_select_all_on_focus(true);
snap_dialog_vbc->add_margin_child(TTR("Scale Snap (%):"), snap_scale); snap_dialog_vbc->add_margin_child(TTR("Scale Snap (%):"), snap_scale);
_snap_update();
/* SETTINGS DIALOG */ /* SETTINGS DIALOG */
settings_dialog = memnew(ConfirmationDialog); settings_dialog = memnew(ConfirmationDialog);
@ -8703,7 +8701,7 @@ void fragment() {
_load_default_preview_settings(); _load_default_preview_settings();
_preview_settings_changed(); _preview_settings_changed();
} }
clear(); // Make sure values are initialized. clear(); // Make sure values are initialized. Will call _snap_update() for us.
} }
Node3DEditor::~Node3DEditor() { Node3DEditor::~Node3DEditor() {
memdelete(preview_node); memdelete(preview_node);

View file

@ -408,8 +408,8 @@ private:
Camera3D *previewing = nullptr; Camera3D *previewing = nullptr;
Camera3D *preview = nullptr; Camera3D *preview = nullptr;
bool previewing_camera; bool previewing_camera = false;
bool previewing_cinema; bool previewing_cinema = false;
bool _is_node_locked(const Node *p_node); bool _is_node_locked(const Node *p_node);
void _preview_exited_scene(); void _preview_exited_scene();
void _toggle_camera_preview(bool); void _toggle_camera_preview(bool);
@ -586,8 +586,8 @@ private:
bool origin_enabled = false; bool origin_enabled = false;
RID grid[3]; RID grid[3];
RID grid_instance[3]; RID grid_instance[3];
bool grid_visible[3]; //currently visible bool grid_visible[3] = { false, false, false }; //currently visible
bool grid_enable[3]; //should be always visible if true bool grid_enable[3] = { false, false, false }; //should be always visible if true
bool grid_enabled = false; bool grid_enabled = false;
bool grid_init_draw = false; bool grid_init_draw = false;
Camera3D::ProjectionType grid_camera_last_update_perspective = Camera3D::PROJECTION_PERSPECTIVE; Camera3D::ProjectionType grid_camera_last_update_perspective = Camera3D::PROJECTION_PERSPECTIVE;