X-Debbugs-CC: monnier@iro.umontreal.ca * doc/lispref/processes.texi (Bindat Types): Expand the documentation for the `str' and `strz' types to clarify expectations and explain edge case behavior. --- doc/lispref/processes.texi | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/doc/lispref/processes.texi b/doc/lispref/processes.texi index 668a577870..68621d32a8 100644 --- a/doc/lispref/processes.texi +++ b/doc/lispref/processes.texi @@ -3479,11 +3479,31 @@ Bindat Types @var{bitlen} has to be a multiple of 8. @item str @var{len} -String of bytes of length @var{len}. +String of length @var{len}. When packing, the first @var{len} bytes +of the input string are copied to the packed output. If the input +string is shorter than @var{len}, the remaining bytes are set to zero. +The input string must be unibyte (@pxref{Text Representations}). When +unpacking, any zero bytes in the packed input string will appear in +the unpacked output. @item strz &optional @var{len} -Zero-terminated string of bytes, can be of arbitrary length or in a fixed-size -field with length @var{len}. +If @var{len} is not provided: Variable-length null-terminated string. +When packing, the entire input string is copied to the packed output +followed by a zero byte (null terminator). The input string must be +unibyte (@pxref{Text Representations}) and must not contain any zero +bytes. When unpacking, the resulting string contains all bytes up to +(but excluding) the null terminator. + +If @var{len} is provided: @code{strz} behaves the same as @code{str} +with one difference. When unpacking, the first zero byte (null +terminator) encountered in the packed string and all subsequent bytes +are excluded from the unpacked result. + +@quotation Caution +The packed output will not be null-terminated unless the input string +is shorter than @var{len} or it contains a zero byte within the first +@var{len} bytes. +@end quotation @item vec @var{len} [@var{type}] Vector of @var{len} elements. The type of the elements is given by -- 2.36.1