From 571909b8b63e52e38caeb7ac177f8f8e43471820 Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 14 May 2016 13:59:49 +0200 Subject: [PATCH] nupa_substitute(), postpone kptr incrementation --- src/frontend/numparam/xpressn.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/src/frontend/numparam/xpressn.c b/src/frontend/numparam/xpressn.c index 9e0eaa2f7..706840fc5 100644 --- a/src/frontend/numparam/xpressn.c +++ b/src/frontend/numparam/xpressn.c @@ -1216,22 +1216,21 @@ nupa_substitute(dico_t *dico, const char *s, char *r) break; } } - kptr++; if (d == '\0') { err = message(dico, "Closing \"}\" not found.\n"); } else { /* exeption made for .meas */ - if (s + 4 == kptr - 1 && strncasecmp(s, "LAST", 4) == 0) { + if (s + 4 == kptr + 1 - 1 && strncasecmp(s, "LAST", 4) == 0) { spice_dstring_reinit(&qstr); sadd(&qstr, "last"); err = 0; } else { - err = evaluate_expr(dico, &qstr, s, kptr - 1); + err = evaluate_expr(dico, &qstr, s, kptr + 1 - 1); } } - s = kptr; + s = kptr + 1; if (!err) ir = ir + (int) (insertnumber(dico, r + ir, &qstr) - (r + ir)); else @@ -1273,15 +1272,14 @@ nupa_substitute(dico_t *dico, const char *s, char *r) break; } } - kptr++; - if (kptr > s_end) { + if (kptr >= s_end) { err = message(dico, "Closing \")\" not found.\n"); } else { - err = evaluate_expr(dico, &qstr, s, kptr - 1); + err = evaluate_expr(dico, &qstr, s, kptr + 1 - 1); } - s = kptr; + s = kptr + 1; } else { /* simple identifier may also be string? */ @@ -1301,10 +1299,9 @@ nupa_substitute(dico_t *dico, const char *s, char *r) break; } } - kptr++; - err = evaluate_variable(dico, &qstr, s - 1, kptr - 1); - s = kptr - 1; + err = evaluate_variable(dico, &qstr, s - 1, kptr + 1 - 1); + s = kptr + 1 - 1; } if (!err)