Ver código fonte

Merge pull request #111496 from godotengine/revert-108837-json-handle-nan-inf

Revert "Handle NaN and Infinity in JSON stringify function"
Thaddeus Crews 2 meses atrás
pai
commit
cb7cd815ee
2 arquivos alterados com 0 adições e 33 exclusões
  1. 0 11
      core/io/json.cpp
  2. 0 22
      tests/core/io/test_json.h

+ 0 - 11
core/io/json.cpp

@@ -76,17 +76,6 @@ 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)) {

+ 0 - 22
tests/core/io/test_json.h

@@ -75,18 +75,7 @@ TEST_CASE("[JSON] Stringify arrays") {
 	full_precision_array.push_back(0.12345678901234568);
 	CHECK(JSON::stringify(full_precision_array, "", true, true) == "[0.12345678901234568]");
 
-	Array non_finite_array;
-	non_finite_array.push_back(Math::INF);
-	non_finite_array.push_back(-Math::INF);
-	non_finite_array.push_back(Math::NaN);
-	CHECK(JSON::stringify(non_finite_array) == "[1e99999,-1e99999,\"NaN\"]");
-
 	ERR_PRINT_OFF
-	Array non_finite_round_trip = JSON::parse_string(JSON::stringify(non_finite_array));
-	CHECK(non_finite_round_trip[0] == Variant(Math::INF));
-	CHECK(non_finite_round_trip[1] == Variant(-Math::INF));
-	CHECK(non_finite_round_trip[2].get_type() == Variant::STRING);
-
 	Array self_array;
 	self_array.push_back(self_array);
 	CHECK(JSON::stringify(self_array) == "[\"[...]\"]");
@@ -124,18 +113,7 @@ TEST_CASE("[JSON] Stringify dictionaries") {
 	full_precision_dictionary["key"] = 0.12345678901234568;
 	CHECK(JSON::stringify(full_precision_dictionary, "", true, true) == "{\"key\":0.12345678901234568}");
 
-	Dictionary non_finite_dictionary;
-	non_finite_dictionary["-inf"] = -Math::INF;
-	non_finite_dictionary["inf"] = Math::INF;
-	non_finite_dictionary["nan"] = Math::NaN;
-	CHECK(JSON::stringify(non_finite_dictionary) == "{\"-inf\":-1e99999,\"inf\":1e99999,\"nan\":\"NaN\"}");
-
 	ERR_PRINT_OFF
-	Dictionary non_finite_round_trip = JSON::parse_string(JSON::stringify(non_finite_dictionary));
-	CHECK(non_finite_round_trip["-inf"] == Variant(-Math::INF));
-	CHECK(non_finite_round_trip["inf"] == Variant(Math::INF));
-	CHECK(non_finite_round_trip["nan"].get_type() == Variant::STRING);
-
 	Dictionary self_dictionary;
 	self_dictionary["key"] = self_dictionary;
 	CHECK(JSON::stringify(self_dictionary) == "{\"key\":\"{...}\"}");