1
0
mirror of https://github.com/godotengine/godot.git synced 2025-11-04 12:00:25 +00:00

Handle NaN and Infinity in JSON stringify function

This commit is contained in:
Aaron Franke
2025-07-21 07:49:18 -07:00
parent 73da0d2020
commit e90cea9250
2 changed files with 33 additions and 0 deletions

View File

@@ -75,6 +75,17 @@ void JSON::_stringify(String &r_result, const Variant &p_var, const String &p_in
case Variant::FLOAT: {
const double num = p_var;
// JSON does not support NaN or Infinity, so use extremely large numbers for infinity.
if (!Math::is_finite(num)) {
if (num == Math::INF) {
r_result += "1e99999";
} else if (num == -Math::INF) {
r_result += "-1e99999";
} else {
r_result += "\"NaN\"";
}
return;
}
// Only for exactly 0. If we have approximately 0 let the user decide how much
// precision they want.
if (num == double(0.0)) {