aboutsummaryrefslogtreecommitdiff
path: root/core/variant_op.cpp
diff options
context:
space:
mode:
authorJuan Linietsky2015-03-22 15:03:32 -0300
committerJuan Linietsky2015-03-22 15:03:32 -0300
commit0302ea5b821939c68529195d223c35bc7f3ce7b1 (patch)
tree762bf92595b88d67c7ddade880942574eac37d7d /core/variant_op.cpp
parent7436f0bb37b43d39ac7b7c72d7761e089b8bdc02 (diff)
parent748311ec42b6818f5481ad4ac4152f40ff1a8a6f (diff)
downloadgodot-0302ea5b821939c68529195d223c35bc7f3ce7b1.tar.gz
godot-0302ea5b821939c68529195d223c35bc7f3ce7b1.tar.zst
godot-0302ea5b821939c68529195d223c35bc7f3ce7b1.zip
Merge pull request #1396 from Spooner/fix_sprintf_errors
Fix sprintf errors
Diffstat (limited to 'core/variant_op.cpp')
-rw-r--r--core/variant_op.cpp16
1 files changed, 10 insertions, 6 deletions
diff --git a/core/variant_op.cpp b/core/variant_op.cpp
index d6129e150..87d9738b0 100644
--- a/core/variant_op.cpp
+++ b/core/variant_op.cpp
@@ -741,18 +741,22 @@ void Variant::evaluate(const Operator& p_op, const Variant& p_a, const Variant&
_RETURN( p_a._data._int % p_b._data._int );
} else if (p_a.type==STRING) {
- const String *str=reinterpret_cast<const String*>(p_a._data._mem);
+ const String* format=reinterpret_cast<const String*>(p_a._data._mem);
+ String result;
+ bool error;
if (p_b.type==ARRAY) {
// e.g. "frog %s %d" % ["fish", 12]
- const Array *arr=reinterpret_cast<const Array*>(p_b._data._mem);
- _RETURN(str->sprintf(*arr));
+ const Array* args=reinterpret_cast<const Array*>(p_b._data._mem);
+ result=format->sprintf(*args, &error);
} else {
// e.g. "frog %d" % 12
- Array arr;
- arr.push_back(p_b);
- _RETURN(str->sprintf(arr));
+ Array args;
+ args.push_back(p_b);
+ result=format->sprintf(args, &error);
}
+ r_valid = !error;
+ _RETURN(result);
}
r_valid=false;