sb_scrub_and_add_sb not draining input string buffer
authorAlan Modra <amodra@gmail.com>
Thu, 2 Jun 2022 01:59:34 +0000 (11:29 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 2 Jun 2022 06:24:14 +0000 (15:54 +0930)
commitcd826186c8b271fa7a1f5ff93b55acd672baf646
tree58be48ed9730b42b272b1db670d1f43c1865f79e
parent6f87d3fd27417e5adb2aa6f106a614296425df57
sb_scrub_and_add_sb not draining input string buffer

It is possible for sb_scrub_and_add_sb to not consume all of the input
string buffer.  If this happens for reasons explained in the comment,
do_scrub_chars can leave pointers to the string buffer for the next
call.  This patch fixes that by ensuring the input is drained.  Note
that the behaviour for an empty string buffer is also changed,
avoiding another do_scrub_chars bug where empty input and single char
sized output buffers could result in a write past the end of the
output.

sb.c (sb_scrub_and_add_sb): Loop until all of input sb is
consumed.
gas/sb.c