bc: fix "echo -n '#foo' | bc" not eating last 'o'
function old new delta zdc_parse_expr 656 653 -3 bc_lex_lineComment 39 36 -3 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 0/2 up/down: 0/-6) Total: -6 bytes text data bss dec hex filename 981424 485 7296 989205 f1815 busybox_old 981418 485 7296 989199 f180f busybox_unstripped Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
This commit is contained in:
parent
a199cc95b7
commit
55f3cab7e9
@ -2655,9 +2655,13 @@ static FAST_FUNC void bc_result_free(void *result)
|
|||||||
|
|
||||||
static void bc_lex_lineComment(BcLex *l)
|
static void bc_lex_lineComment(BcLex *l)
|
||||||
{
|
{
|
||||||
|
// Try: echo -n '#foo' | bc
|
||||||
|
size_t i;
|
||||||
l->t.t = BC_LEX_WHITESPACE;
|
l->t.t = BC_LEX_WHITESPACE;
|
||||||
while (l->i < l->len && l->buf[l->i++] != '\n');
|
i = l->i;
|
||||||
--l->i;
|
while (i < l->len && l->buf[i] != '\n')
|
||||||
|
i++;
|
||||||
|
l->i = i;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void bc_lex_whitespace(BcLex *l)
|
static void bc_lex_whitespace(BcLex *l)
|
||||||
@ -2889,8 +2893,8 @@ static BC_STATUS zbc_lex_next(BcLex *l)
|
|||||||
// Comments are also BC_LEX_WHITESPACE tokens and eaten here.
|
// Comments are also BC_LEX_WHITESPACE tokens and eaten here.
|
||||||
s = BC_STATUS_SUCCESS;
|
s = BC_STATUS_SUCCESS;
|
||||||
do {
|
do {
|
||||||
l->t.t = BC_LEX_EOF;
|
|
||||||
if (l->i == l->len) {
|
if (l->i == l->len) {
|
||||||
|
l->t.t = BC_LEX_EOF;
|
||||||
if (!G.input_fp)
|
if (!G.input_fp)
|
||||||
RETURN_STATUS(BC_STATUS_SUCCESS);
|
RETURN_STATUS(BC_STATUS_SUCCESS);
|
||||||
if (!bc_lex_more_input(l)) {
|
if (!bc_lex_more_input(l)) {
|
||||||
|
@ -16,6 +16,11 @@ testing "bc comment 2: /*/ is not a closed comment" \
|
|||||||
"4\n" \
|
"4\n" \
|
||||||
"" "1 /*/ + 2 */ + 3"
|
"" "1 /*/ + 2 */ + 3"
|
||||||
|
|
||||||
|
testing "bc comment 3: unterminated #comment" \
|
||||||
|
"bc" \
|
||||||
|
"" \
|
||||||
|
"" "#foo" # no trailing newline
|
||||||
|
|
||||||
testing "bc backslash 1" \
|
testing "bc backslash 1" \
|
||||||
"bc" \
|
"bc" \
|
||||||
"3\n" \
|
"3\n" \
|
||||||
|
Loading…
x
Reference in New Issue
Block a user