about summary refs log tree commit diff
path: root/src/lib
diff options
context:
space:
mode:
authorBrian Anderson <andersrb@gmail.com>2011-04-26 20:49:03 -0400
committerBrian Anderson <andersrb@gmail.com>2011-04-26 20:49:03 -0400
commit8216b5fc10e7c7b0d4e9f40bb4f9fdaaaebf9400 (patch)
treeb7dddff0dda11e1eae672740185f8431952b317b /src/lib
parent2e12fbfc06abdf1547528047b1438204ca4121a1 (diff)
downloadrust-8216b5fc10e7c7b0d4e9f40bb4f9fdaaaebf9400.tar.gz
rust-8216b5fc10e7c7b0d4e9f40bb4f9fdaaaebf9400.zip
Fix the interaction between various flags in #fmt
Diffstat (limited to 'src/lib')
-rw-r--r--src/lib/ExtFmt.rs19
1 files changed, 12 insertions, 7 deletions
diff --git a/src/lib/ExtFmt.rs b/src/lib/ExtFmt.rs
index a9747c6a748..c71e49a39b2 100644
--- a/src/lib/ExtFmt.rs
+++ b/src/lib/ExtFmt.rs
@@ -532,15 +532,20 @@ mod RT {
         // instead.
         if (signed
             && zero_padding
-            && _str.byte_len(s) > 0u
-            && s.(0) == '-' as u8) {
+            && _str.byte_len(s) > 0u) {
 
-            auto bytelen = _str.byte_len(s);
-            auto numpart = _str.substr(s, 1u, bytelen - 1u);
-            ret "-" + padstr + numpart;
-        } else {
-            ret padstr + s;
+            auto head = s.(0);
+            if (head == '+' as u8
+                || head == '-' as u8
+                || head == ' ' as u8) {
+
+                auto headstr = _str.unsafe_from_bytes(vec(head));
+                auto bytelen = _str.byte_len(s);
+                auto numpart = _str.substr(s, 1u, bytelen - 1u);
+                ret headstr + padstr + numpart;
+            }
         }
+        ret padstr + s;
     }
 
     fn have_flag(vec[flag] flags, flag f) -> bool {