From b90b1eaf6f3692f25f22b39ae4bc83b6ca18f19f Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Fri, 9 Apr 2021 07:31:36 -0700 Subject: [PATCH] PDP11, VAXen: Properly clear I/O space read/write dispatches on deregister as reported in #1029 --- PDP11/pdp11_io_lib.c | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/PDP11/pdp11_io_lib.c b/PDP11/pdp11_io_lib.c index d6ee7161..84f9adfb 100644 --- a/PDP11/pdp11_io_lib.c +++ b/PDP11/pdp11_io_lib.c @@ -425,8 +425,11 @@ for (i = 0; i < (int32) dibp->lnt; i = i + 2) { /* create entries */ "Device %s address conflict with %s at 0%o\n", sim_dname (dptr), cdname, (int)dibp->ba); } - if ((dibp->rd == NULL) && (dibp->wr == NULL) && (dibp->vnum == 0)) + if ((dibp->rd == NULL) && (dibp->wr == NULL) && (dibp->vnum == 0)) { iodibp[idx] = NULL; /* deregister DIB */ + iodispR[idx] = NULL; /* and related dispatches */ + iodispW[idx] = NULL; + } else { if (dibp->rd) iodispR[idx] = dibp->rd; /* set rd dispatch */