Browse Source

nupa_substitute(), postpone kptr incrementation

pre-master-46
rlar 10 years ago
parent
commit
571909b8b6
  1. 19
      src/frontend/numparam/xpressn.c

19
src/frontend/numparam/xpressn.c

@ -1216,22 +1216,21 @@ nupa_substitute(dico_t *dico, const char *s, char *r)
break; break;
} }
} }
kptr++;
if (d == '\0') { if (d == '\0') {
err = message(dico, "Closing \"}\" not found.\n"); err = message(dico, "Closing \"}\" not found.\n");
} else { } else {
/* exeption made for .meas */ /* 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); spice_dstring_reinit(&qstr);
sadd(&qstr, "last"); sadd(&qstr, "last");
err = 0; err = 0;
} else { } 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) if (!err)
ir = ir + (int) (insertnumber(dico, r + ir, &qstr) - (r + ir)); ir = ir + (int) (insertnumber(dico, r + ir, &qstr) - (r + ir));
else else
@ -1273,15 +1272,14 @@ nupa_substitute(dico_t *dico, const char *s, char *r)
break; break;
} }
} }
kptr++;
if (kptr > s_end) {
if (kptr >= s_end) {
err = message(dico, "Closing \")\" not found.\n"); err = message(dico, "Closing \")\" not found.\n");
} else { } else {
err = evaluate_expr(dico, &qstr, s, kptr - 1);
err = evaluate_expr(dico, &qstr, s, kptr + 1 - 1);
} }
s = kptr;
s = kptr + 1;
} else { } else {
/* simple identifier may also be string? */ /* simple identifier may also be string? */
@ -1301,10 +1299,9 @@ nupa_substitute(dico_t *dico, const char *s, char *r)
break; 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) if (!err)

Loading…
Cancel
Save