Browse Source

Fixed padding bug of sprintf function

Serhat 4 years ago
parent
commit
9f2cdfea82
2 changed files with 4 additions and 3 deletions
  1. 3 2
      core/ustring.cpp
  2. 1 1
      modules/gdscript/doc_classes/@GDScript.xml

+ 3 - 2
core/ustring.cpp

@@ -4484,11 +4484,12 @@ String String::sprintf(const Array &values, bool *error) const {
 					int number_len = str.length();
 
 					// Padding.
+					int pad_chars_count = (value < 0 || show_sign) ? min_chars - 1 : min_chars;
 					String pad_char = pad_with_zeroes ? String("0") : String(" ");
 					if (left_justified) {
-						str = str.rpad(min_chars, pad_char);
+						str = str.rpad(pad_chars_count, pad_char);
 					} else {
-						str = str.lpad(min_chars, pad_char);
+						str = str.lpad(pad_chars_count, pad_char);
 					}
 
 					// Sign.

+ 1 - 1
modules/gdscript/doc_classes/@GDScript.xml

@@ -767,7 +767,7 @@
 				Returns the integer modulus of [code]a/b[/code] that wraps equally in positive and negative.
 				[codeblock]
 				for i in range(-3, 4):
-				    print("%2.0f %2.0f %2.0f" % [i, i % 3, posmod(i, 3)])
+				    print("%2d %2d %2d" % [i, i % 3, posmod(i, 3)])
 				[/codeblock]
 				Produces:
 				[codeblock]