aboutsummaryrefslogtreecommitdiff
path: root/shell/math.c
diff options
context:
space:
mode:
Diffstat (limited to 'shell/math.c')
-rw-r--r--shell/math.c16
1 files changed, 8 insertions, 8 deletions
diff --git a/shell/math.c b/shell/math.c
index fee325307..cb702b7f4 100644
--- a/shell/math.c
+++ b/shell/math.c
@@ -265,19 +265,18 @@ static arith_t
265evaluate_string(arith_state_t *math_state, const char *expr); 265evaluate_string(arith_state_t *math_state, const char *expr);
266 266
267static arith_t 267static arith_t
268arith_lookup_val(arith_state_t *math_state, const char *name) 268arith_lookup_val(arith_state_t *math_state, const char *name, char *endname)
269{ 269{
270 char c; 270 char c;
271 const char *p; 271 const char *p;
272 char *e = (char*)endofname(name);
273 272
274 c = *e; 273 c = *endname;
275 *e = '\0'; 274 *endname = '\0';
276 p = math_state->lookupvar(name); 275 p = math_state->lookupvar(name);
277 *e = c; 276 *endname = c;
278 if (p) { 277 if (p) {
279 arith_t val; 278 arith_t val;
280 size_t len = e - name; 279 size_t len = endname - name;
281 remembered_name *cur; 280 remembered_name *cur;
282 remembered_name remember; 281 remembered_name remember;
283 282
@@ -685,9 +684,10 @@ evaluate_string(arith_state_t *math_state, const char *expr)
685 || expr[1] == '=' /* or "==..." */ 684 || expr[1] == '=' /* or "==..." */
686 ) { 685 ) {
687 /* Evaluate variable to value */ 686 /* Evaluate variable to value */
688 numstackptr->val = arith_lookup_val(math_state, numstackptr->var_name); 687 arith_t val = arith_lookup_val(math_state, numstackptr->var_name, (char*)p);
689 if (math_state->errmsg) 688 if (math_state->errmsg)
690 return numstackptr->val; /* -1 */ 689 return val; /* -1 */
690 numstackptr->val = val;
691 } 691 }
692 } else { 692 } else {
693 dbg("[%d] var:IGNORED", (int)(numstackptr - numstack)); 693 dbg("[%d] var:IGNORED", (int)(numstackptr - numstack));