From cbc14bc01012d8aa24a0b7519b91a68aa609fa9f Mon Sep 17 00:00:00 2001 From: Mark Pizzolato Date: Wed, 2 Nov 2011 05:45:01 -0700 Subject: [PATCH] Fix memory leak on error path and proper polling vs async conditions --- PDP11/pdp11_xq.c | 5 +++-- PDP11/pdp11_xq.h | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/PDP11/pdp11_xq.c b/PDP11/pdp11_xq.c index ec5e2a0e..c4eb46e7 100644 --- a/PDP11/pdp11_xq.c +++ b/PDP11/pdp11_xq.c @@ -450,10 +450,10 @@ MTAB xq_mod[] = { { MTAB_XTD | MTAB_VDV, 0, "TYPE", "TYPE={DEQNA|DELQA|DELQA-T}", &xq_set_type, &xq_show_type, NULL }, #ifdef USE_READER_THREAD - { MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500|DELAY=nnn}", + { MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500|DELAY=nnn}", &xq_set_poll, &xq_show_poll, NULL }, #else - { MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500}", + { MTAB_XTD | MTAB_VDV, 0, "POLL", "POLL={DEFAULT|DISABLED|4..2500}", &xq_set_poll, &xq_show_poll, NULL }, #endif { MTAB_XTD | MTAB_VDV | MTAB_NMO, 0, "SANITY", "SANITY={ON|OFF}", @@ -2584,6 +2584,7 @@ t_stat xq_attach(UNIT* uptr, char* cptr) if (xq->var->poll == 0) { status = eth_set_async(xq->var->etherface, xq->var->coalesce_latency_ticks); if (status != SCPE_OK) { + eth_close(xq->var->etherface); free(tptr); free(xq->var->etherface); xq->var->etherface = NULL; diff --git a/PDP11/pdp11_xq.h b/PDP11/pdp11_xq.h index 5f786975..b71a725e 100644 --- a/PDP11/pdp11_xq.h +++ b/PDP11/pdp11_xq.h @@ -87,7 +87,7 @@ extern int32 int_req[IPL_HLVL]; #define XQ_QUE_MAX 500 /* read queue size in packets */ #define XQ_FILTER_MAX 14 /* number of filters allowed */ -#if defined SIM_ASYNCH_IO +#if defined(SIM_ASYNCH_IO) && defined(USE_READER_THREAD) #define XQ_SERVICE_INTERVAL 0 /* polling interval - No Polling with Asynch I/O */ #else #define XQ_SERVICE_INTERVAL 100 /* polling interval - X per second */