diff options
| author | Juan Linietsky | 2015-03-22 15:03:32 -0300 |
|---|---|---|
| committer | Juan Linietsky | 2015-03-22 15:03:32 -0300 |
| commit | 0302ea5b821939c68529195d223c35bc7f3ce7b1 (patch) | |
| tree | 762bf92595b88d67c7ddade880942574eac37d7d /core/variant_op.cpp | |
| parent | 7436f0bb37b43d39ac7b7c72d7761e089b8bdc02 (diff) | |
| parent | 748311ec42b6818f5481ad4ac4152f40ff1a8a6f (diff) | |
| download | godot-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.cpp | 16 |
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; |
