GDscript function str2var now returns input string on invalid input

str2var used to raise a blocking error when  invalid input was passed. Now it logs an error message and
returns the input string. This solution was proposed in #13021.

Closes #11457 and #13021.
This commit is contained in:
Erik 2018-10-11 12:36:38 +02:00
parent eeee47196c
commit 78c9677816

View file

@ -729,22 +729,14 @@ void GDScriptFunctions::call(Function p_func, const Variant **p_args, int p_arg_
r_ret = Variant();
return;
}
r_ret = *p_args[0];
VariantParser::StreamString ss;
ss.s = *p_args[0];
String errs;
int line;
Error err = VariantParser::parse(&ss, r_ret, errs, line);
if (err != OK) {
r_error.error = Variant::CallError::CALL_ERROR_INVALID_ARGUMENT;
r_error.argument = 0;
r_error.expected = Variant::STRING;
r_ret = "Parse error at line " + itos(line) + ": " + errs;
return;
}
(void)VariantParser::parse(&ss, r_ret, errs, line);
} break;
case VAR_TO_BYTES: {
VALIDATE_ARG_COUNT(1);