Fixes to infinite loop issues found by Mikulas Patocka

This commit is contained in:
Mark Pizzolato 2013-03-05 11:40:33 -08:00
parent 7b01cd11f2
commit 374b13f946
4 changed files with 7 additions and 5 deletions

View file

@ -1750,7 +1750,7 @@ static void trace_instruction (void)
fac *= (float) (1 << 30); fac *= (float) (1 << 30);
exp -= 30; exp -= 30;
while (exp > 0) while (exp > 0)
fac *= 2; fac *= 2, exp--;
} }
else if (exp > 0) else if (exp > 0)
fac *= (float) (1 << exp); fac *= (float) (1 << exp);
@ -1758,7 +1758,7 @@ static void trace_instruction (void)
fac /= (float) (1 << 30); fac /= (float) (1 << 30);
exp += 30; exp += 30;
while (exp < 0) while (exp < 0)
fac /= 2; fac /= 2, exp++;
} }
else if (exp < 0) else if (exp < 0)
fac /= (float) (1 << -exp); fac /= (float) (1 << -exp);

View file

@ -962,7 +962,7 @@ switch (fnc) { /* case on function */
MAPM (ba10 - i, mpa10, UMAP_RRV); MAPM (ba10 - i, mpa10, UMAP_RRV);
} }
val = ((fmt == TC_10C)? (((d10) xbuf [--j]) & 017): 0); val = ((fmt == TC_10C)? (((d10) xbuf [--j]) & 017): 0);
for (k = 0; k < 4; i++) for (k = 0; k < 4; k++)
v[k] = xbuf[--j]; v[k] = xbuf[--j];
val = val | (v[0] << 4) | (v[1] << 12) | (v[2] << 20) | (v[3] << 28); val = val | (v[0] << 4) | (v[1] << 12) | (v[2] << 20) | (v[3] << 28);
if (fnc == FNC_READR) /* read? store */ if (fnc == FNC_READR) /* read? store */

View file

@ -1617,6 +1617,7 @@ if ((uptr = rq_getucb (cp, lu))) { /* get unit */
cp->pak[prv].link = cp->pak[tpkt].link; cp->pak[prv].link = cp->pak[tpkt].link;
break; break;
} }
prv = tpkt;
} }
} }
if (tpkt) { /* found target? */ if (tpkt) { /* found target? */
@ -3122,4 +3123,4 @@ static char buf[80];
sprintf (buf, "%s MSCP disk controller", ctlr_tab[rq_ctxmap[dptr->units->cnum]->ctype].name); sprintf (buf, "%s MSCP disk controller", ctlr_tab[rq_ctxmap[dptr->units->cnum]->ctype].name);
return buf; return buf;
} }

View file

@ -933,6 +933,7 @@ if ((uptr = tq_getucb (lu))) { /* get unit */
tq_pkt[prv].link = tq_pkt[tpkt].link; /* unlink */ tq_pkt[prv].link = tq_pkt[tpkt].link; /* unlink */
break; break;
} }
prv = tpkt;
} }
} }
if (tpkt) { /* found target? */ if (tpkt) { /* found target? */
@ -2386,7 +2387,7 @@ fprintf (st, "%s (%dMB)", drv_tab[tq_typ].name, (uint32) (drv_tab[tq_typ].cap >>
return SCPE_OK; return SCPE_OK;
} }
t_stat tq_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr) static t_stat tq_help (FILE *st, DEVICE *dptr, UNIT *uptr, int32 flag, char *cptr)
{ {
char *devtype = UNIBUS ? "TUK50" : "TQK50"; char *devtype = UNIBUS ? "TUK50" : "TQK50";