From cdaf71ab578b04cc46a90cf79155a1ece4af7e8e Mon Sep 17 00:00:00 2001 From: "benjamin.franksen" <benjamin.franksen@helmholtz-berlin.de> Date: Thu, 26 Sep 2013 22:23:10 +0000 Subject: [PATCH] seq: fixed a bug in pvXxxCancel and pvXxxComplete I forgot to add the array index to the varId when iterating over a multi-PV array. --- src/seq/seq_if.c | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/src/seq/seq_if.c b/src/seq/seq_if.c index cf6f3444..8bb0a6cd 100644 --- a/src/seq/seq_if.c +++ b/src/seq/seq_if.c @@ -249,7 +249,7 @@ epicsShareFunc boolean seq_pvGetComplete( ch->varName); done = TRUE; } - else if (!ss->getReq[varId]) + else if (!ss->getReq[varId+n]) { errlogSevPrintf(errlogMinor, "pvGetComplete(%s): no pending get request for this variable\n", @@ -261,7 +261,7 @@ epicsShareFunc boolean seq_pvGetComplete( switch (epicsEventTryWait(getSem)) { case epicsEventWaitOK: - ss->getReq[varId] = NULL; + ss->getReq[varId+n] = NULL; epicsEventSignal(getSem); status = check_connected(ch->dbch, metaPtr(ch,ss)); if (status == pvStatOK && optTest(sp, OPT_SAFE)) @@ -276,7 +276,7 @@ epicsShareFunc boolean seq_pvGetComplete( case epicsEventWaitTimeout: break; case epicsEventWaitError: - ss->getReq[varId] = NULL; + ss->getReq[varId+n] = NULL; epicsEventSignal(getSem); errlogSevPrintf(errlogFatal, "pvGetComplete(%s): " "epicsEventTryWait(getSem[%d]) failure\n", ch->varName, varId); @@ -328,7 +328,7 @@ epicsShareFunc void seq_pvGetCancel( } else { - ss->getReq[varId] = NULL; + ss->getReq[varId+n] = NULL; epicsEventSignal(getSem); } } @@ -613,7 +613,7 @@ epicsShareFunc boolean seq_pvPutComplete( ch->varName); done = TRUE; } - else if (!ss->putReq[varId]) + else if (!ss->putReq[varId+n]) { errlogSevPrintf(errlogMinor, "pvPutComplete(%s): no pending put request for this variable\n", @@ -625,7 +625,7 @@ epicsShareFunc boolean seq_pvPutComplete( switch (epicsEventTryWait(putSem)) { case epicsEventWaitOK: - ss->putReq[varId] = NULL; + ss->putReq[varId+n] = NULL; epicsEventSignal(putSem); check_connected(ch->dbch, metaPtr(ch,ss)); done = TRUE; @@ -633,7 +633,7 @@ epicsShareFunc boolean seq_pvPutComplete( case epicsEventWaitTimeout: break; case epicsEventWaitError: - ss->putReq[varId] = NULL; + ss->putReq[varId+n] = NULL; epicsEventSignal(putSem); errlogSevPrintf(errlogFatal, "pvPutComplete(%s): " "epicsEventTryWait(putSem[%d]) failure\n", ch->varName, varId); @@ -685,7 +685,7 @@ epicsShareFunc void seq_pvPutCancel( } else { - ss->putReq[varId] = NULL; + ss->putReq[varId+n] = NULL; epicsEventSignal(putSem); } } -- GitLab