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)
|
if (written > data->n)
|
||||||
{
|
{
|
||||||
written = data->n;
|
data->q += data->n;
|
||||||
|
data->n = 0;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
data->q += written;
|
data->q += written;
|
||||||
data->n += written;
|
data->n -= written;
|
||||||
|
}
|
||||||
return written;
|
return written;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user