From 58931c073dd26b52dc2d5182166a145cb221ad20 Mon Sep 17 00:00:00 2001 From: aaronp64 Date: Thu, 18 Apr 2024 11:28:57 -0400 Subject: [PATCH] Check for NaN in set_volume_db functions Added check in AudioStreamPlayer, AudioStreamPlayer2D, and AudioStreamPlayer3D set_volume_db functions to prevent setting volume to NaN, and give an error. Using NaN for volume and playing the AudioStreamPlayer could prevent all audio from playing, even from other AudioStreamPlayers. Fixes #88133 --- scene/2d/audio_stream_player_2d.cpp | 1 + scene/3d/audio_stream_player_3d.cpp | 1 + scene/audio/audio_stream_player.cpp | 1 + 3 files changed, 3 insertions(+) diff --git a/scene/2d/audio_stream_player_2d.cpp b/scene/2d/audio_stream_player_2d.cpp index cbd3c244d95f..4fc0fe026870 100644 --- a/scene/2d/audio_stream_player_2d.cpp +++ b/scene/2d/audio_stream_player_2d.cpp @@ -196,6 +196,7 @@ Ref AudioStreamPlayer2D::get_stream() const { } void AudioStreamPlayer2D::set_volume_db(float p_volume) { + ERR_FAIL_COND_MSG(Math::is_nan(p_volume), "Volume can't be set to NaN."); internal->volume_db = p_volume; } diff --git a/scene/3d/audio_stream_player_3d.cpp b/scene/3d/audio_stream_player_3d.cpp index f1f9a04ea05d..0cef56dbf249 100644 --- a/scene/3d/audio_stream_player_3d.cpp +++ b/scene/3d/audio_stream_player_3d.cpp @@ -496,6 +496,7 @@ Ref AudioStreamPlayer3D::get_stream() const { } void AudioStreamPlayer3D::set_volume_db(float p_volume) { + ERR_FAIL_COND_MSG(Math::is_nan(p_volume), "Volume can't be set to NaN."); internal->volume_db = p_volume; } diff --git a/scene/audio/audio_stream_player.cpp b/scene/audio/audio_stream_player.cpp index dadcfab69f40..0c2bd64e845f 100644 --- a/scene/audio/audio_stream_player.cpp +++ b/scene/audio/audio_stream_player.cpp @@ -59,6 +59,7 @@ Ref AudioStreamPlayer::get_stream() const { } void AudioStreamPlayer::set_volume_db(float p_volume) { + ERR_FAIL_COND_MSG(Math::is_nan(p_volume), "Volume can't be set to NaN."); internal->volume_db = p_volume; Vector volume_vector = _get_volume_vector();