printf-hook-builtin: Correctly calculate written bytes in print_in_hook()

The hook data counts remaining buffer bytes, not used ones. Counting them
correctly fixes a crash for long hexdumps.

Further, print_in_hook() must return the number of bytes that would have been
written, not the actually written bytes. This is important, as we allocate a
dynamic buffer in bus that relies on the exact byte count. Fixes long hexdumps
that got truncated.
This commit is contained in:
Martin Willi
2014-01-15 18:28:43 +01:00
parent a48d19a3bf
commit 2e89bc4b66
@@ -122,10 +122,14 @@ size_t print_in_hook(printf_hook_data_t *data, char *fmt, ...)
if (written > data->n)
{
written = data->n;
data->q += data->n;
data->n = 0;
}
else
{
data->q += written;
data->n -= written;
}
data->q += written;
data->n += written;
return written;
}