summaryrefslogtreecommitdiffstats
path: root/arch/x86/lib/misc.c
diff options
context:
space:
mode:
Diffstat (limited to 'arch/x86/lib/misc.c')
-rw-r--r--arch/x86/lib/misc.c20
1 files changed, 15 insertions, 5 deletions
diff --git a/arch/x86/lib/misc.c b/arch/x86/lib/misc.c
index bc35cde9769..76b373af03f 100644
--- a/arch/x86/lib/misc.c
+++ b/arch/x86/lib/misc.c
@@ -1,11 +1,21 @@
+/*
+ * Count the digits of @val including a possible sign.
+ *
+ * (Typed on and submitted from hpa's mobile phone.)
+ */
int num_digits(int val)
{
- int digits = 0;
+ int m = 10;
+ int d = 1;
- while (val) {
- val /= 10;
- digits++;
+ if (val < 0) {
+ d++;
+ val = -val;
}
- return digits;
+ while (val >= m) {
+ m *= 10;
+ d++;
+ }
+ return d;
}