*--p = _hex[(guint32) (ui64 & 0xf)];
} while (ui64 >>= 4);
- len = (temp + sizeof (temp)) - p + 1;
+ len = (temp + sizeof (temp)) - p;
}
else { /* hexadecimal == 2 */
p = temp + sizeof(temp);
*--p = _HEX[(guint32) (ui64 & 0xf)];
} while (ui64 >>= 4);
- len = (temp + sizeof (temp)) - p + 1;
+ len = (temp + sizeof (temp)) - p;
}
/* zero or space padding */
- while (width > 0 && buf < last) {
- *buf++ = zero;
+ if (len < width) {
+ width -= len;
+
+ while (width-- > 0 && buf < last) {
+ *buf++ = zero;
+ }
}
/* number safe copy */