Skip to content

Commit cb7cd81

Browse files
authored
Merge pull request #111496 from godotengine/revert-108837-json-handle-nan-inf
Revert "Handle NaN and Infinity in JSON stringify function"
2 parents 16a11ac + 8b06cdf commit cb7cd81

File tree

2 files changed

+0
-33
lines changed

2 files changed

+0
-33
lines changed

core/io/json.cpp

Lines changed: 0 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -76,17 +76,6 @@ void JSON::_stringify(String &r_result, const Variant &p_var, const String &p_in
7676
case Variant::FLOAT: {
7777
const double num = p_var;
7878

79-
// JSON does not support NaN or Infinity, so use extremely large numbers for infinity.
80-
if (!Math::is_finite(num)) {
81-
if (num == Math::INF) {
82-
r_result += "1e99999";
83-
} else if (num == -Math::INF) {
84-
r_result += "-1e99999";
85-
} else {
86-
r_result += "\"NaN\"";
87-
}
88-
return;
89-
}
9079
// Only for exactly 0. If we have approximately 0 let the user decide how much
9180
// precision they want.
9281
if (num == double(0.0)) {

tests/core/io/test_json.h

Lines changed: 0 additions & 22 deletions
Original file line numberDiff line numberDiff line change
@@ -75,18 +75,7 @@ TEST_CASE("[JSON] Stringify arrays") {
7575
full_precision_array.push_back(0.12345678901234568);
7676
CHECK(JSON::stringify(full_precision_array, "", true, true) == "[0.12345678901234568]");
7777

78-
Array non_finite_array;
79-
non_finite_array.push_back(Math::INF);
80-
non_finite_array.push_back(-Math::INF);
81-
non_finite_array.push_back(Math::NaN);
82-
CHECK(JSON::stringify(non_finite_array) == "[1e99999,-1e99999,\"NaN\"]");
83-
8478
ERR_PRINT_OFF
85-
Array non_finite_round_trip = JSON::parse_string(JSON::stringify(non_finite_array));
86-
CHECK(non_finite_round_trip[0] == Variant(Math::INF));
87-
CHECK(non_finite_round_trip[1] == Variant(-Math::INF));
88-
CHECK(non_finite_round_trip[2].get_type() == Variant::STRING);
89-
9079
Array self_array;
9180
self_array.push_back(self_array);
9281
CHECK(JSON::stringify(self_array) == "[\"[...]\"]");
@@ -124,18 +113,7 @@ TEST_CASE("[JSON] Stringify dictionaries") {
124113
full_precision_dictionary["key"] = 0.12345678901234568;
125114
CHECK(JSON::stringify(full_precision_dictionary, "", true, true) == "{\"key\":0.12345678901234568}");
126115

127-
Dictionary non_finite_dictionary;
128-
non_finite_dictionary["-inf"] = -Math::INF;
129-
non_finite_dictionary["inf"] = Math::INF;
130-
non_finite_dictionary["nan"] = Math::NaN;
131-
CHECK(JSON::stringify(non_finite_dictionary) == "{\"-inf\":-1e99999,\"inf\":1e99999,\"nan\":\"NaN\"}");
132-
133116
ERR_PRINT_OFF
134-
Dictionary non_finite_round_trip = JSON::parse_string(JSON::stringify(non_finite_dictionary));
135-
CHECK(non_finite_round_trip["-inf"] == Variant(-Math::INF));
136-
CHECK(non_finite_round_trip["inf"] == Variant(Math::INF));
137-
CHECK(non_finite_round_trip["nan"].get_type() == Variant::STRING);
138-
139117
Dictionary self_dictionary;
140118
self_dictionary["key"] = self_dictionary;
141119
CHECK(JSON::stringify(self_dictionary) == "{\"key\":\"{...}\"}");

0 commit comments

Comments
 (0)