handle 'asp -x' correctly, instead of giving up
This commit is contained in:
parent
f0fe57f807
commit
e6fd25052a
1 changed files with 7 additions and 5 deletions
|
@ -80,6 +80,7 @@ line_p lnp;
|
||||||
register int arg, argdef;
|
register int arg, argdef;
|
||||||
line_p x = PREV(lnp);
|
line_p x = PREV(lnp);
|
||||||
line_p y = (x == (line_p) 0 ? (line_p) 0 : PREV(x));
|
line_p y = (x == (line_p) 0 ? (line_p) 0 : PREV(x));
|
||||||
|
int neg = 0;
|
||||||
|
|
||||||
if (instr == op_lab) {
|
if (instr == op_lab) {
|
||||||
do_inst_label(lnp);
|
do_inst_label(lnp);
|
||||||
|
@ -94,11 +95,7 @@ line_p lnp;
|
||||||
|
|
||||||
if (*s != '0') {
|
if (*s != '0') {
|
||||||
while (*s != '\0') {
|
while (*s != '\0') {
|
||||||
if (*s++ == '-') { /* ignores asp -4 */
|
neg = (*s++ == '-');
|
||||||
stacktop = 0;
|
|
||||||
s++;
|
|
||||||
continue;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (TYPE(lnp) == OPSHORT) {
|
if (TYPE(lnp) == OPSHORT) {
|
||||||
arg = SHORT(lnp);
|
arg = SHORT(lnp);
|
||||||
|
@ -148,6 +145,11 @@ line_p lnp;
|
||||||
assert(FALSE);
|
assert(FALSE);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
/*
|
||||||
|
* When the last argument was negative, the element size
|
||||||
|
* must be negated. This is to catch 'asp -4'.
|
||||||
|
*/
|
||||||
|
if (neg) stacktop = -stacktop;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (stacktop < 0) stacktop = 0;
|
if (stacktop < 0) stacktop = 0;
|
||||||
|
|
Loading…
Reference in a new issue