fix to prevent loop resulting in stack overflow
This commit is contained in:
parent
bfb60b8a33
commit
01ac83b971
1 changed files with 7 additions and 6 deletions
|
@ -71,6 +71,12 @@ getrefcount(regno) {
|
|||
|
||||
erasereg(regno) {
|
||||
register struct reginfo *rp;
|
||||
register int i;
|
||||
|
||||
rp = &machregs[regno];
|
||||
rp->r_contents.t_token = 0;
|
||||
for (i=0;i<TOKENSIZE;i++)
|
||||
rp->r_contents.t_att[i].aw = 0;
|
||||
|
||||
#if MAXMEMBERS==0
|
||||
awayreg(regno);
|
||||
|
@ -86,11 +92,6 @@ awayreg(regno) {
|
|||
register tkdef_p tdp;
|
||||
register i;
|
||||
|
||||
rp = &machregs[regno];
|
||||
rp->r_contents.t_token = 0;
|
||||
for (i=0;i<TOKENSIZE;i++)
|
||||
rp->r_contents.t_att[i].aw = 0;
|
||||
|
||||
/* Now erase recursively all registers containing
|
||||
* something using this one
|
||||
*/
|
||||
|
@ -98,7 +99,7 @@ awayreg(regno) {
|
|||
if (rp->r_contents.t_token == -1) {
|
||||
if (rp->r_contents.t_att[0].ar == regno)
|
||||
erasereg(rp-machregs);
|
||||
} else {
|
||||
} else if (rp->r_contents.t_token > 0) {
|
||||
tdp= & tokens[rp->r_contents.t_token];
|
||||
for (i=0;i<TOKENSIZE;i++)
|
||||
if (tdp->t_type[i] == EV_REG &&
|
||||
|
|
Loading…
Reference in a new issue