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:
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user