From 87789ee5489c041323ff1c2800ba84c4d412aba8 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 cbd3c244d95fe9..4fc0fe02687031 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 f1f9a04ea05d61..0cef56dbf24938 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 dadcfab69f40ad..0c2bd64e845f71 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();