Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.busybox.net/busybox.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDenys Vlasenko <vda.linux@googlemail.com>2019-01-04 07:41:47 +0300
committerDenys Vlasenko <vda.linux@googlemail.com>2019-02-14 16:40:57 +0300
commitd2651fb775df3a81058d3b39baf2431083da179f (patch)
treeff58abe62ba37c34e8ea1e8993f3625a520d0c36
parentfb001145e1a7363a40a69592e0c1426dd24eb84f (diff)
dc: fix '?'
function old new delta zdc_parse_expr 470 479 +9 zxc_vm_process 839 814 -25 ------------------------------------------------------------------------------ (add/remove: 0/0 grow/shrink: 1/1 up/down: 9/-25) Total: -16 bytes Signed-off-by: Denys Vlasenko <vda.linux@googlemail.com>
-rw-r--r--miscutils/bc.c13
-rwxr-xr-xtestsuite/dc.tests5
2 files changed, 9 insertions, 9 deletions
diff --git a/miscutils/bc.c b/miscutils/bc.c
index ec3560c2b..1e8056c01 100644
--- a/miscutils/bc.c
+++ b/miscutils/bc.c
@@ -5054,6 +5054,9 @@ static BC_STATUS zdc_parse_expr(void)
BcParse *p = &G.prs;
int i;
+ if (p->lex == XC_LEX_NLINE)
+ RETURN_STATUS(zxc_lex_next());
+
i = (int)p->lex - (int)XC_LEX_OP_POWER;
if (i >= 0) {
BcInst inst = dc_LEX_to_INST[i];
@@ -6766,14 +6769,6 @@ static BC_STATUS zxc_vm_process(const char *text)
#endif
} else {
#if ENABLE_DC
- // Most of dc parsing assumes all whitespace,
- // including '\n', is eaten.
- while (G.prs.lex == XC_LEX_NLINE) {
- s = zxc_lex_next();
- if (s) goto err;
- if (G.prs.lex == XC_LEX_EOF)
- goto done;
- }
s = zdc_parse_expr();
#endif
}
@@ -6836,7 +6831,7 @@ static BC_STATUS zxc_vm_process(const char *text)
bc_vec_pop_all(&f->code);
ip->inst_idx = 0;
}
- IF_DC(done:)
+
dbg_lex_done("%s:%d done", __func__, __LINE__);
RETURN_STATUS(s);
}
diff --git a/testsuite/dc.tests b/testsuite/dc.tests
index 29b413cad..87b1e71c3 100755
--- a/testsuite/dc.tests
+++ b/testsuite/dc.tests
@@ -41,6 +41,11 @@ testing "dc complex without spaces (multiple args)" \
"16\n" \
"" ""
+testing "dc read" \
+ "dc -finput" \
+ "2\n9\n1\n" \
+ "1?2\nf" "9\n"
+
optional FEATURE_DC_BIG
# All tests below depend on FEATURE_DC_BIG