summaryrefslogtreecommitdiff
path: root/core
diff options
context:
space:
mode:
authorsumit0190 <sumi29@gmail.com>2020-02-09 00:46:13 -0500
committersumit0190 <sumi29@gmail.com>2020-02-09 00:46:13 -0500
commitc4dbd8a7445e74dd0b6959de56c952bad7da1a21 (patch)
treed804c6fc1aa1ef7ff5fdddba4ab3a9d8c7d76bf2 /core
parentde932a528512a6312e08ba6926b658a577168f9d (diff)
Read and write exported infs/nans correctly (#35388)
Diffstat (limited to 'core')
-rw-r--r--core/variant_parser.cpp10
1 files changed, 8 insertions, 2 deletions
diff --git a/core/variant_parser.cpp b/core/variant_parser.cpp
index 6ca9d6c246..f22ffda665 100644
--- a/core/variant_parser.cpp
+++ b/core/variant_parser.cpp
@@ -512,6 +512,10 @@ Error VariantParser::parse_value(Token &token, Variant &value, Stream *p_stream,
value = false;
else if (id == "null" || id == "nil")
value = Variant();
+ else if (id == "inf")
+ value = Math_INF;
+ else if (id == "nan")
+ value = Math_NAN;
else if (id == "Vector2") {
Vector<float> args;
@@ -1586,8 +1590,10 @@ Error VariantWriter::write(const Variant &p_variant, StoreStringFunc p_store_str
case Variant::REAL: {
String s = rtosfix(p_variant.operator real_t());
- if (s.find(".") == -1 && s.find("e") == -1)
- s += ".0";
+ if (s != "inf" && s != "nan") {
+ if (s.find(".") == -1 && s.find("e") == -1)
+ s += ".0";
+ }
p_store_string_func(p_store_string_ud, s);
} break;
case Variant::STRING: {