From f5448025a854a3dd3b0bf957dfcac2cb0520b1de Mon Sep 17 00:00:00 2001 From: rlar Date: Sat, 14 May 2016 15:37:09 +0200 Subject: [PATCH] nupa_substitute(), postpone kptr incrementation --- src/frontend/numparam/xpressn.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/src/frontend/numparam/xpressn.c b/src/frontend/numparam/xpressn.c index 9e67f0102..fdf1821fe 100644 --- a/src/frontend/numparam/xpressn.c +++ b/src/frontend/numparam/xpressn.c @@ -1200,9 +1200,9 @@ nupa_substitute(dico_t *dico, const char *s, char *r) const char *kptr = s; int nnest = 1; - for (;;) { + for (;; kptr++) { - d = *kptr++; + d = *kptr; if (d == '{') nnest++; @@ -1210,9 +1210,11 @@ nupa_substitute(dico_t *dico, const char *s, char *r) nnest--; if (nnest == 0) { + kptr++; break; } if (d == '\0') { + kptr++; break; } } @@ -1253,24 +1255,24 @@ nupa_substitute(dico_t *dico, const char *s, char *r) const char *kptr = s; int level = 1; - for (;;) { + for (;; kptr++) { if (kptr >= s_end) d = '\0'; else d = *kptr; - kptr++; - if (d == '(') level++; else if (d == ')') level--; - if (kptr > s_end) { + if (kptr >= s_end) { + kptr++; break; } if ((d == ')') && (level <= 0)) { + kptr++; break; } } @@ -1287,19 +1289,19 @@ nupa_substitute(dico_t *dico, const char *s, char *r) /* simple identifier may also be string? */ const char *kptr = s; - for (;;) { + for (;; kptr++) { if (kptr >= s_end) d = '\0'; else d = *kptr; - kptr++; - - if (kptr > s_end) { + if (kptr >= s_end) { + kptr++; break; } if (d <= ' ') { + kptr++; break; } }