#29 nsd/tcljob.c:1213: error: Null Dereference pointer `queue` last assigned on line 1133 could be null and is dereferenced by call to `ReleaseQueue()` at line 1213, column 15. nsd/tcljob.c:1130:1: start of procedure JobJobListObjCmd() 1128. *---------------------------------------------------------------------- 1129. */ 1130. static int ^ 1131. JobJobListObjCmd(ClientData UNUSED(clientData), Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) 1132. { nsd/tcljob.c:1133:5: 1131. JobJobListObjCmd(ClientData UNUSED(clientData), Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) 1132. { 1133. Queue *queue = NULL; ^ 1134. int result = TCL_OK; 1135. Ns_ObjvSpec args[] = { nsd/tcljob.c:1134:5: 1132. { 1133. Queue *queue = NULL; 1134. int result = TCL_OK; ^ 1135. Ns_ObjvSpec args[] = { 1136. {"queueId", ObjvQueue, &queue, NULL}, nsd/tcljob.c:1135:5: 1133. Queue *queue = NULL; 1134. int result = TCL_OK; 1135. Ns_ObjvSpec args[] = { ^ 1136. {"queueId", ObjvQueue, &queue, NULL}, 1137. {NULL, NULL, NULL, NULL} nsd/tcljob.c:1140:9: Taking false branch 1138. }; 1139. 1140. if (Ns_ParseObjv(NULL, args, interp, 2, objc, objv) != NS_OK) { ^ 1141. result = TCL_ERROR; 1142. nsd/tcljob.c:1148:9: 1146. Tcl_HashSearch search; 1147. 1148. assert(queue != NULL); ^ 1149. /* 1150. * Create a Tcl List to hold the list of jobs. nsd/tcljob.c:1152:9: Skipping Tcl_NewListObj(): method has no implementation 1150. * Create a Tcl List to hold the list of jobs. 1151. */ 1152. jobList = Tcl_NewListObj(0, NULL); ^ 1153. for (hPtr = Tcl_FirstHashEntry(&queue->jobs, &search); 1154. hPtr != NULL; nsd/tcljob.c:1153:14: Skipping Tcl_FirstHashEntry(): method has no implementation 1151. */ 1152. jobList = Tcl_NewListObj(0, NULL); 1153. for (hPtr = Tcl_FirstHashEntry(&queue->jobs, &search); ^ 1154. hPtr != NULL; 1155. hPtr = Tcl_NextHashEntry(&search) nsd/tcljob.c:1154:14: Loop condition is false. Leaving loop 1152. jobList = Tcl_NewListObj(0, NULL); 1153. for (hPtr = Tcl_FirstHashEntry(&queue->jobs, &search); 1154. hPtr != NULL; ^ 1155. hPtr = Tcl_NextHashEntry(&search) 1156. ) { nsd/tcljob.c:1211:9: Skipping Tcl_SetObjResult(): method has no implementation 1209. } 1210. } 1211. Tcl_SetObjResult(interp, jobList); ^ 1212. releaseQueue: 1213. (void)ReleaseQueue(queue, NS_FALSE); nsd/tcljob.c:1212:5: 1210. } 1211. Tcl_SetObjResult(interp, jobList); 1212. releaseQueue: ^ 1213. (void)ReleaseQueue(queue, NS_FALSE); 1214. } nsd/tcljob.c:1213:15: 1211. Tcl_SetObjResult(interp, jobList); 1212. releaseQueue: 1213. (void)ReleaseQueue(queue, NS_FALSE); ^ 1214. } 1215. return result; nsd/tcljob.c:1993:1: start of procedure ReleaseQueue() 1991. *---------------------------------------------------------------------- 1992. */ 1993. static bool ^ 1994. ReleaseQueue(Queue *queue, bool locked) 1995. { nsd/tcljob.c:1997:5: 1995. { 1996. Tcl_HashSearch search; 1997. bool deleted = NS_FALSE; ^ 1998. 1999. NS_NONNULL_ASSERT(queue != NULL); nsd/tcljob.c:1999:5: 1997. bool deleted = NS_FALSE; 1998. 1999. NS_NONNULL_ASSERT(queue != NULL); ^ 2000. 2001. --queue->refCount; nsd/tcljob.c:2001:5: 1999. NS_NONNULL_ASSERT(queue != NULL); 2000. 2001. --queue->refCount; ^ 2002. 2003. /*