mescc: Mes C Library: Use __mesabi_uldiv.
authorDanny Milosavljevic <dannym@scratchpost.org>
Thu, 13 Jun 2019 23:02:40 +0000 (01:02 +0200)
committerJan Nieuwenhuizen <janneke@gnu.org>
Thu, 13 Jun 2019 23:02:40 +0000 (01:02 +0200)
* lib/mes/ntoab.c (ntoab): Use __mesabi_uldiv.

lib/mes/ntoab.c

index 3166015f803cc9ac47c7b12976f43e4abefa6489..d3499addc4eab2a43f7cb32a1c7ff6ac0fbe5147 100644 (file)
@@ -26,24 +26,27 @@ ntoab (long x, int base, int signed_p)
   static char itoa_buf[20];
   char *p = itoa_buf + 11;
   *p-- = 0;
+  assert(base > 0);
 
-  int sign = 0;
-  unsigned long u = x;
+  int sign_p = 0;
+  unsigned long u;
   if (signed_p && x < 0)
     {
-      sign = 1;
+      sign_p = 1;
       u = -x;
     }
+  else
+    u = x;
 
   do
     {
-      long i = u % base;
+      unsigned long i;
+      u = __mesabi_uldiv(u, (unsigned long) base, &i);
       *p-- = i > 9 ? 'a' + i - 10 : '0' + i;
-      u = u / base;
     }
   while (u);
 
-  if (sign && *(p + 1) != '0')
+  if (sign_p && *(p + 1) != '0')
     *p-- = '-';
 
   return p + 1;