#25 nsd/tcljob.c:1053: error: Null Dereference pointer `queue` last assigned on line 1026 could be null and is dereferenced by call to `ReleaseQueue()` at line 1053, column 15. nsd/tcljob.c:1023:1: start of procedure JobJobsObjCmd() 1021. *---------------------------------------------------------------------- 1022. */ 1023. static int ^ 1024. JobJobsObjCmd(ClientData UNUSED(clientData), Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) 1025. { nsd/tcljob.c:1026:5: 1024. JobJobsObjCmd(ClientData UNUSED(clientData), Tcl_Interp *interp, int objc, Tcl_Obj *const* objv) 1025. { 1026. Queue *queue = NULL; ^ 1027. int result = TCL_OK; 1028. Ns_ObjvSpec args[] = { nsd/tcljob.c:1027:5: 1025. { 1026. Queue *queue = NULL; 1027. int result = TCL_OK; ^ 1028. Ns_ObjvSpec args[] = { 1029. {"queueId", ObjvQueue, &queue, NULL}, nsd/tcljob.c:1028:5: 1026. Queue *queue = NULL; 1027. int result = TCL_OK; 1028. Ns_ObjvSpec args[] = { ^ 1029. {"queueId", ObjvQueue, &queue, NULL}, 1030. {NULL, NULL, NULL, NULL} nsd/tcljob.c:1033:9: Taking false branch 1031. }; 1032. 1033. if (Ns_ParseObjv(NULL, args, interp, 2, objc, objv) != NS_OK) { ^ 1034. result = TCL_ERROR; 1035. nsd/tcljob.c:1039:9: Skipping Tcl_NewListObj(): method has no implementation 1037. const Tcl_HashEntry *hPtr; 1038. Tcl_HashSearch search; 1039. Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); ^ 1040. 1041. assert(queue != NULL); nsd/tcljob.c:1041:9: 1039. Tcl_Obj *listObj = Tcl_NewListObj(0, NULL); 1040. 1041. assert(queue != NULL); ^ 1042. /* 1043. * Collect the jobIdString in the listObj. nsd/tcljob.c:1045:14: Skipping Tcl_FirstHashEntry(): method has no implementation 1043. * Collect the jobIdString in the listObj. 1044. */ 1045. for (hPtr = Tcl_FirstHashEntry(&queue->jobs, &search); ^ 1046. hPtr != NULL; 1047. hPtr = Tcl_NextHashEntry(&search) nsd/tcljob.c:1046:14: Loop condition is false. Leaving loop 1044. */ 1045. for (hPtr = Tcl_FirstHashEntry(&queue->jobs, &search); 1046. hPtr != NULL; ^ 1047. hPtr = Tcl_NextHashEntry(&search) 1048. ) { nsd/tcljob.c:1053:15: 1051. Tcl_ListObjAppendElement(interp, listObj, Tcl_NewStringObj(jobIdString, -1)); 1052. } 1053. (void)ReleaseQueue(queue, NS_FALSE); ^ 1054. Tcl_SetObjResult(interp, listObj); 1055. } 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. /*