shithub: mc

Download patch

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 = {