diff options
author | Petr Machata <pmachata@redhat.com> | 2012-01-17 19:04:57 +0100 |
---|---|---|
committer | Petr Machata <pmachata@redhat.com> | 2012-08-29 19:02:08 +0200 |
commit | f6a56e15530b179e404aab075dab8661af64155e (patch) | |
tree | 00e1422ca49c3a461854d1233c7cda2c52368653 /lens_default.c | |
parent | 987d27b3e97b208874ca967d536dc862dae2bd43 (diff) | |
download | ltrace-f6a56e15530b179e404aab075dab8661af64155e.tar.gz |
Fix character counting in format_naked_char in default lens
Diffstat (limited to 'lens_default.c')
-rw-r--r-- | lens_default.c | 14 |
1 files changed, 10 insertions, 4 deletions
diff --git a/lens_default.c b/lens_default.c index c58984e..f59d328 100644 --- a/lens_default.c +++ b/lens_default.c @@ -107,15 +107,21 @@ format_integer(FILE *stream, struct value *value, enum int_fmt_t format, #undef HANDLE_WIDTH static int +account(int *countp, int c) +{ + if (c >= 0) + *countp += c; + return c; +} + +static int acc_fprintf(int *countp, FILE *stream, const char *format, ...) { va_list pa; va_start(pa, format); - int i = vfprintf(stream, format, pa); + int i = account(countp, vfprintf(stream, format, pa)); va_end(pa); - if (i >= 0) - *countp += i; return i; } @@ -175,7 +181,7 @@ format_naked_char(FILE *stream, struct value *value, { int written = 0; if (acc_fprintf(&written, stream, "'") < 0 - || format_char(stream, value, arguments) < 0 + || account(&written, format_char(stream, value, arguments)) < 0 || acc_fprintf(&written, stream, "'") < 0) return -1; |