diff --git a/src/resource_handle.c b/src/resource_handle.c index 0685d61798716f5968f5d897b937b3d0c9a3d17e..a34144657c873646a00f185af843e123c865bd06 100644 --- a/src/resource_handle.c +++ b/src/resource_handle.c @@ -684,18 +684,21 @@ int reshGetStatus ( cdiResH resH, const resOps * ops ) nspT = namespaceResHDecode ( resH ); xassert ( nspT.nsp == nsp && - nspT.idx >= 0 && - nspT.idx < resHList[nsp].size ); - - listElem_t *listElem = resHList[nsp].resources + nspT.idx; - - const resOps *elemOps = listElem->res.v.ops; - + nspT.idx >= 0 ); + int status; + if (nspT.idx < resHList[nsp].size) { + listElem_t *listElem = resHList[nsp].resources + nspT.idx; + + const resOps *elemOps = listElem->res.v.ops; + xassert(listElem && (!(listElem->status & RESH_IN_USE_BIT) || elemOps == ops)); + status = listElem->status; + } else { + status = RESH_UNUSED; + } LIST_UNLOCK(); - xassert(listElem && (!(listElem->status & RESH_IN_USE_BIT) || elemOps == ops)); - return listElem->status; + return status; } /**************************************************************/