aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'libsbutil/sb_printf.c')
-rw-r--r--libsbutil/sb_printf.c12
1 files changed, 9 insertions, 3 deletions
diff --git a/libsbutil/sb_printf.c b/libsbutil/sb_printf.c
index 8756a91..2270ece 100644
--- a/libsbutil/sb_printf.c
+++ b/libsbutil/sb_printf.c
@@ -46,7 +46,6 @@ void sb_vfdprintf(int fd, const char *format, va_list args)
char buf[50];
size_t idx;
- int i;
unsigned int u, x;
char hex_base;
size_t padding = 0;
@@ -97,7 +96,11 @@ void sb_vfdprintf(int fd, const char *format, va_list args)
case 'd':
case 'i': {
- i = va_arg(args, int);
+ long i;
+ if (modifiers & MOD_SIZE_T)
+ i = va_arg(args, ssize_t);
+ else
+ i = va_arg(args, int);
u = i;
if (i < 0) {
sb_write(fd, "-", 1);
@@ -125,7 +128,10 @@ void sb_vfdprintf(int fd, const char *format, va_list args)
case 'x': {
hex_base = 'a';
out_hex:
- x = va_arg(args, unsigned int);
+ if (modifiers & MOD_SIZE_T)
+ x = va_arg(args, size_t);
+ else
+ x = va_arg(args, unsigned int);
out_ptr:
idx = 0;
do {