aboutsummaryrefslogtreecommitdiff
path: root/core/ustring.cpp
diff options
context:
space:
mode:
authorvolzhs2017-02-08 10:40:35 +0900
committervolzhs2017-02-08 10:40:35 +0900
commit7ebb356a319fd610879c09c40698c785d046e253 (patch)
tree4e5bbc824f6043c540f41995d7c4b4a4b01698ff /core/ustring.cpp
parent34b6caa43303c46f178e0375aa50bfaf5ac903e7 (diff)
downloadgodot-7ebb356a319fd610879c09c40698c785d046e253.tar.gz
godot-7ebb356a319fd610879c09c40698c785d046e253.tar.zst
godot-7ebb356a319fd610879c09c40698c785d046e253.zip
Fix zero padding formatting
Diffstat (limited to '')
-rw-r--r--core/ustring.cpp15
1 files changed, 9 insertions, 6 deletions
diff --git a/core/ustring.cpp b/core/ustring.cpp
index df3815351..9f7c263dd 100644
--- a/core/ustring.cpp
+++ b/core/ustring.cpp
@@ -3945,12 +3945,8 @@ String String::sprintf(const Array& values, bool* error) const {
case 'X': base = 16; capitalize = true; break;
}
// Get basic number.
- String str = String::num_int64(value, base, capitalize);
-
- // Sign.
- if (show_sign && value >= 0) {
- str = str.insert(0, "+");
- }
+ String str = String::num_int64(ABS(value), base, capitalize);
+ int number_len = str.length();
// Padding.
String pad_char = pad_with_zeroes ? String("0") : String(" ");
@@ -3960,6 +3956,13 @@ String String::sprintf(const Array& values, bool* error) const {
str = str.lpad(min_chars, pad_char);
}
+ // Sign.
+ if (show_sign && value >= 0) {
+ str = str.insert(pad_with_zeroes?0:str.length()-number_len, "+");
+ } else if (value < 0) {
+ str = str.insert(pad_with_zeroes?0:str.length()-number_len, "-");
+ }
+
formatted += str;
++value_index;
in_format = false;