{
lock_AssertWrite(&buf_globalLock);
- lock_ObtainMutex(&scp->redirMx);
+ if (scp) {
+ lock_ObtainMutex(&scp->redirMx);
+ }
if (bufp->qFlags & CM_BUF_QINLRU) {
_InterlockedAnd(&bufp->qFlags, ~CM_BUF_QINLRU);
&bufp->redirq);
scp->redirLastAccess = bufp->redirLastAccess;
InterlockedIncrement(&scp->redirBufCount);
- }
- lock_ReleaseMutex(&scp->redirMx);
+ lock_ReleaseMutex(&scp->redirMx);
+ }
}
void
if (!(bufp->qFlags & CM_BUF_QREDIR))
return;
- lock_ObtainMutex(&scp->redirMx);
+ if (scp) {
+ lock_ObtainMutex(&scp->redirMx);
+ }
_InterlockedAnd(&bufp->qFlags, ~CM_BUF_QREDIR);
osi_QRemoveHT( (osi_queue_t **) &cm_data.buf_redirListp,
(osi_queue_t **) &cm_data.buf_redirListEndp,
&bufp->q);
buf_DecrementRedirCount();
+
if (scp) {
osi_QRemoveHT( (osi_queue_t **) &scp->redirQueueH,
(osi_queue_t **) &scp->redirQueueT,
&bufp->redirq);
+
InterlockedDecrement(&scp->redirBufCount);
+ lock_ReleaseMutex(&scp->redirMx);
}
-
- lock_ReleaseMutex(&scp->redirMx);
}
void
if (!(bufp->qFlags & CM_BUF_QREDIR))
return;
- lock_ObtainMutex(&scp->redirMx);
+ if (scp) {
+ lock_ObtainMutex(&scp->redirMx);
+ }
osi_QRemoveHT( (osi_queue_t **) &cm_data.buf_redirListp,
(osi_queue_t **) &cm_data.buf_redirListEndp,
(osi_queue_t **) &scp->redirQueueT,
&bufp->redirq);
scp->redirLastAccess = bufp->redirLastAccess;
- }
- lock_ReleaseMutex(&scp->redirMx);
+ lock_ReleaseMutex(&scp->redirMx);
+ }
}