Browse Source

Bugfix: Use base unit for zero, and only if all values are zero

Luke Dashjr 12 years ago
parent
commit
6a7abb4db0
1 changed files with 12 additions and 2 deletions
  1. 12 2
      miner.c

+ 12 - 2
miner.c

@@ -2510,6 +2510,7 @@ utility_to_hashrate(double utility)
 }
 
 static const char*_unitchar = "pn\xb5m kMGTPEZY?";
+static const int _unitbase = 4;
 
 static
 void pick_unit(float hashrate, unsigned char *unit)
@@ -2518,7 +2519,8 @@ void pick_unit(float hashrate, unsigned char *unit)
 	
 	if (hashrate == 0)
 	{
-		*unit = 2;
+		if (*unit < _unitbase)
+			*unit = _unitbase;
 		return;
 	}
 	
@@ -2608,6 +2610,7 @@ static
 char *_multi_format_unit(char **buflist, size_t *bufszlist, bool floatprec, const char *measurement, enum h2bs_fmt fmt, const char *delim, int count, const float *numbers, bool isarray)
 {
 	unsigned char unit = 0;
+	bool allzero = true;
 	int i;
 	size_t delimsz;
 	char *buf = buflist[0];
@@ -2618,7 +2621,14 @@ char *_multi_format_unit(char **buflist, size_t *bufszlist, bool floatprec, cons
 		delimsz = strlen(delim);
 	
 	for (i = 0; i < count; ++i)
-		pick_unit(numbers[i], &unit);
+		if (numbers[i] != 0)
+		{
+			pick_unit(numbers[i], &unit);
+			allzero = false;
+		}
+	
+	if (allzero)
+		unit = _unitbase;
 	
 	--count;
 	for (i = 0; i < count; ++i)