From 374b13f946e530356ada5464c7d650199de9350c Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Tue, 5 Mar 2013 11:40:33 -0800 Subject: [PATCH] Fixes to infinite loop issues found by Mikulas Patocka --- Ibm1130/ibm1130_cpu.c | 4 ++-- PDP10/pdp10_tu.c | 2 +- PDP11/pdp11_rq.c | 3 ++- PDP11/pdp11_tq.c | 3 ++- 4 files changed, 7 insertions(+), 5 deletions(-) diff --git a/Ibm1130/ibm1130_cpu.c b/Ibm1130/ibm1130_cpu.c index 9910f586..65094394 100644 --- a/Ibm1130/ibm1130_cpu.c +++ b/Ibm1130/ibm1130_cpu.c @@ -1750,7 +1750,7 @@ static void trace_instruction (void) fac *= (float) (1 << 30); exp -= 30; while (exp > 0) - fac *= 2; + fac *= 2, exp--; } else if (exp > 0) fac *= (float) (1 << exp); @@ -1758,7 +1758,7 @@ static void trace_instruction (void) fac /= (float) (1 << 30); exp += 30; while (exp < 0) - fac /= 2; + fac /= 2, exp++; } else if (exp < 0) fac /= (float) (1 << -exp); diff --git a/PDP10/pdp10_tu.c b/PDP10/pdp10_tu.c index d24f57ca..a1f3c3d9 100644 --- a/PDP10/pdp10_tu.c +++ b/PDP10/pdp10_tu.c @@ -962,7 +962,7 @@ switch (fnc) { /* case on function */ MAPM (ba10 - i, mpa10, UMAP_RRV); } 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]; val = val | (v[0] << 4) | (v[1] << 12) | (v[2] << 20) | (v[3] << 28); if (fnc == FNC_READR) /* read? store */ diff --git a/PDP11/pdp11_rq.c b/PDP11/pdp11_rq.c index 7c45c12b..f4190967 100644 --- a/PDP11/pdp11_rq.c +++ b/PDP11/pdp11_rq.c @@ -1617,6 +1617,7 @@ if ((uptr = rq_getucb (cp, lu))) { /* get unit */ cp->pak[prv].link = cp->pak[tpkt].link; break; } + prv = tpkt; } } 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); return buf; -} \ No newline at end of file +} diff --git a/PDP11/pdp11_tq.c b/PDP11/pdp11_tq.c index 159aa151..04c25eee 100644 --- a/PDP11/pdp11_tq.c +++ b/PDP11/pdp11_tq.c @@ -933,6 +933,7 @@ if ((uptr = tq_getucb (lu))) { /* get unit */ tq_pkt[prv].link = tq_pkt[tpkt].link; /* unlink */ break; } + prv = tpkt; } } 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; } -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";