Bladeren bron

Fix uninitialized data reads in Input

Found by Valgrind.
lawnjelly 3 jaren geleden
bovenliggende
commit
d60eae3dbc
2 gewijzigde bestanden met toevoegingen van 5 en 5 verwijderingen
  1. 4 4
      core/os/input_event.cpp
  2. 1 1
      scene/gui/tree.cpp

+ 4 - 4
core/os/input_event.cpp

@@ -49,25 +49,25 @@ bool InputEvent::is_action(const StringName &p_action, bool p_exact_match) const
 }
 
 bool InputEvent::is_action_pressed(const StringName &p_action, bool p_allow_echo, bool p_exact_match) const {
-	bool pressed;
+	bool pressed = false;
 	bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, p_exact_match, &pressed, nullptr, nullptr);
 	return valid && pressed && (p_allow_echo || !is_echo());
 }
 
 bool InputEvent::is_action_released(const StringName &p_action, bool p_exact_match) const {
-	bool pressed;
+	bool pressed = false;
 	bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, p_exact_match, &pressed, nullptr, nullptr);
 	return valid && !pressed;
 }
 
 float InputEvent::get_action_strength(const StringName &p_action, bool p_exact_match) const {
-	float strength;
+	float strength = 0.0f;
 	bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, p_exact_match, nullptr, &strength, nullptr);
 	return valid ? strength : 0.0f;
 }
 
 float InputEvent::get_action_raw_strength(const StringName &p_action, bool p_exact_match) const {
-	float raw_strength;
+	float raw_strength = 0.0f;
 	bool valid = InputMap::get_singleton()->event_get_action_status(Ref<InputEvent>((InputEvent *)this), p_action, p_exact_match, nullptr, nullptr, &raw_strength);
 	return valid ? raw_strength : 0.0f;
 }

+ 1 - 1
scene/gui/tree.cpp

@@ -2405,7 +2405,7 @@ void Tree::_gui_input(Ref<InputEvent> p_event) {
 				TreeItem *old_it = cache.hover_item;
 				int old_col = cache.hover_cell;
 
-				int col, h, section;
+				int col = 0, h = 0, section = 0;
 				TreeItem *it = _find_item_at_pos(root, mpos, col, h, section);
 
 				if (drop_mode_flags) {