ref: dc5040ca44220629fb40e077ae8127fc764f43db
parent: 076b8c43103645df52a89ca1f163974cadc4e677
author: Ori Bernstein <[email protected]>
date: Mon Aug 6 17:08:48 EDT 2012
Correctly format negative values.
--- a/fmt.myr
+++ b/fmt.myr
@@ -55,7 +55,7 @@
n += intfmt(buf[n, buf.len], i_val, 10)
;;
'p':
- strfmt(buf[n,buf.len], "0x")
+ n += strfmt(buf[n,buf.len], "0x")
i_val = *(ap castto(int64*))
n += intfmt(buf[n, buf.len], i_val, 16)
;;
@@ -80,6 +80,7 @@
var digits = [
'0','1','2','3','4','5','6','7','8','9','a','b','c','d','e','f'
]
+ var isneg
var b : char[32]
var i
var j
@@ -88,8 +89,7 @@
n = 0
i = 0
if val < 0
- b[i] = '-'
- i++
+ isneg = true
;;
while val != 0
b[i] = digits[val % base]
@@ -97,6 +97,9 @@
i++
;;
n = 0
+ if isneg
+ n += encode(buf[n,buf.len], '-')
+ ;;
for j = i-1; j >= 0; j--
n += encode(buf[n,buf.len], b[j])
;;
@@ -105,8 +108,8 @@
const min = {a : size, b : size
if a < b
- -> b
- else
-> a
+ else
+ -> b
;;
}
--- a/test.myr
+++ b/test.myr
@@ -25,7 +25,7 @@
;;
std.write(1, "Hello, 世界\n")
chartypes()
- std.put("format output %i\n", 123)
+ std.put("format output %b\n", 12)
}
const chartypes = {