Index: generic/nsf.c =================================================================== diff -u -ra0faba200038c44cda56f3f421361563b4bd95d7 -r22f4e55c94ff56910d48c5b3a49ea6fd6bf80d2c --- generic/nsf.c (.../nsf.c) (revision a0faba200038c44cda56f3f421361563b4bd95d7) +++ generic/nsf.c (.../nsf.c) (revision 22f4e55c94ff56910d48c5b3a49ea6fd6bf80d2c) @@ -991,7 +991,7 @@ static NSF_INLINE Var * VarHashCreateVar(TclVarHashTable *tablePtr, Tcl_Obj *key, int *newPtr) { - Var *varPtr = NULL; + Var *varPtr = NULL; Tcl_HashEntry *hPtr; nonnull_assert(tablePtr != NULL); @@ -2378,7 +2378,7 @@ */ cl->color = GRAY; - for (; sl; sl = sl->nextPtr) { + for (; sl != NULL; sl = sl->nextPtr) { NsfClass *sc = sl->cl; if (sc->color == GRAY) { cl->color = WHITE; return 0; } if (unlikely(sc->color == WHITE && !TopoSort(sc, baseClass, direction, withMixinOfs))) { @@ -2471,7 +2471,7 @@ fprintf(stderr, "--> check %s before %s?\n", ClassName(b), ClassName(a)); NsfClassListPrint("miList", miList); #endif - for (sl = superClasses; sl; sl = sl->nextPtr) { + for (sl = superClasses; sl != NULL; sl = sl->nextPtr) { if (sl->cl == b) { bFound = 1; } else if (bFound && sl->cl == a) { @@ -2513,7 +2513,9 @@ static void ValidClassListTail(const char *what, NsfClasses *classListPtr) { NsfClasses *sl, *tail; - for (sl = classListPtr, tail = NULL; sl; sl = sl->nextPtr) {tail = sl;} + for (sl = classListPtr, tail = NULL; sl != NULL; sl = sl->nextPtr) { + tail = sl; + } if (tail != NULL) { /* fprintf(stderr, "check tail what %s %p\n", what, ClassName(tail->cl), tail->nextPtr);*/ assert(IsBaseClass(&tail->cl->object)); @@ -2591,7 +2593,7 @@ * perform the merge operation. For n elements in superClasses, the merge * operation is performed n-1 times. */ - for (sl = superClasses->nextPtr; sl; sl = sl->nextPtr) { + for (sl = superClasses->nextPtr; sl != NULL; sl = sl->nextPtr) { NsfClasses *mergeList = sl->cl->order, *baseListCurrent; #if defined(NSF_LINEARIZER_TRACE) @@ -2707,7 +2709,7 @@ } } - for (sl = deletionList; sl; sl = sl->nextPtr) { + for (sl = deletionList; sl != NULL; sl = sl->nextPtr) { /* fprintf(stderr, "delete from deletion list %p client data %p\n", sl, sl->clientData); */ NsfClassListFree(sl->clientData); } @@ -2853,7 +2855,7 @@ */ if (likely(cl->super != NULL) && unlikely(cl->super->nextPtr != NULL)) { - for (sl = cl->super; sl; sl = sl->nextPtr) { + for (sl = cl->super; sl != NULL; sl = sl->nextPtr) { NsfClasses *pl; #if defined(NSF_LINEARIZER_TRACE) @@ -2891,21 +2893,22 @@ /* * Reset the color of all nodes. */ - for (sl = cl->order; sl; sl = sl->nextPtr) { + for (sl = cl->order; sl != NULL; sl = sl->nextPtr) { sl->cl->color = WHITE; } /* * If computation is successful, return cl->order. - * Otherwise clear cl->order. + * Otherwise clear cl->order if necessary. */ if (likely(success)) { AssertOrderIsWhite(cl->order); - return cl->order; - } else { + } else if (cl->order != NULL) { NsfClassListFree(cl->order); - return cl->order = NULL; + cl->order = NULL; } + + return cl->order; } /* @@ -4265,7 +4268,8 @@ if (objHashTablePtr->buckets == objHashTablePtr->staticBuckets) { varHashTablePtr->buckets = varHashTablePtr->staticBuckets; } - for (hPtr = Tcl_FirstHashEntry(varHashTablePtr, &search); hPtr; + for (hPtr = Tcl_FirstHashEntry(varHashTablePtr, &search); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { hPtr->tablePtr = varHashTablePtr; } @@ -5607,7 +5611,8 @@ * less, if a deletion of one item triggers the destroy of another * item. */ - for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { Tcl_Command cmd = (Tcl_Command)Tcl_GetHashValue(hPtr); fprintf(stderr, "will destroy %p %s\n", cmd, Tcl_GetCommandName(interp, cmd)); @@ -5623,7 +5628,8 @@ * destroy of another item of the same table. Therefore we use * Nsf_NextHashEntry(), which handles this case. */ - for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); + hPtr != NULL; hPtr = Nsf_NextHashEntry(cmdTablePtr, expected, &hSrch)) { /*Tcl_Command cmd = (Tcl_Command)Tcl_GetHashValue(hPtr); fprintf(stderr, "NSDeleteChild %p table %p numEntries before %d\n", @@ -5634,7 +5640,8 @@ /* * Finally, delete the classes. */ - for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); + hPtr != NULL; hPtr = Nsf_NextHashEntry(cmdTablePtr, expected, &hSrch)) { expected = cmdTablePtr->numEntries - NSDeleteChild(interp, (Tcl_Command)Tcl_GetHashValue(hPtr), 0); @@ -5670,7 +5677,8 @@ /* * Delete all user-defined procs in the namespace */ - for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { Tcl_Command cmd = (Tcl_Command) Tcl_GetHashValue(hPtr); @@ -7347,7 +7355,8 @@ nonnull_assert(aStore != NULL); - for (hPtr = Tcl_FirstHashEntry(&aStore->procs, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(&aStore->procs, &hSrch); + hPtr != NULL; hPtr = Tcl_FirstHashEntry(&aStore->procs, &hSrch)) { /* * AssertionRemoveProc calls Tcl_DeleteHashEntry(hPtr), thus @@ -8104,7 +8113,8 @@ Tcl_HashSearch search; Tcl_HashEntry *hPtr; - for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr; + for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { NsfObject *inst = (NsfObject *)Tcl_GetHashKey(tablePtr, hPtr); Command *cmdPtr; @@ -8874,7 +8884,8 @@ } instanceTablePtr = &subClasses->cl->instances; - for (hPtr = Tcl_FirstHashEntry(instanceTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(instanceTablePtr, &hSrch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfObject *object = (NsfObject *)Tcl_GetHashKey(instanceTablePtr, hPtr); @@ -9961,7 +9972,7 @@ FilterSearchAgain(interp, &subClasses->cl->opt->classFilters, NULL, subClasses->cl); } - for (; hPtr; hPtr = Tcl_NextHashEntry(&hSrch)) { + for (; hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfObject *object = (NsfObject *)Tcl_GetHashKey(&subClasses->cl->instances, hPtr); FilterResetOrder(object); @@ -10019,7 +10030,7 @@ if (opt != NULL) { CmdListRemoveContextClassFromList(&opt->classFilters, removeClass, GuardDel); } - for (; hPtr; hPtr = Tcl_NextHashEntry(&hSrch)) { + for (; hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfObject *object = (NsfObject *) Tcl_GetHashKey(&subClasses->cl->instances, hPtr); if (object->opt != NULL) { @@ -10652,7 +10663,7 @@ while (cl->super) { (void)RemoveSuper(cl, cl->super->cl); } - for (l = osl; l; l = l->nextPtr) { + for (l = osl; l != NULL; l = l->nextPtr) { AddSuper(cl, l->cl); } if (osl != NULL) { @@ -13501,7 +13512,7 @@ } else if (unlikely(*methodName == ':')) { NsfObject *regObject; - int fromClassNS = 0; + int fromClassNS = 0; /* * We have fully qualified name provided. Determine the class and/or @@ -13599,7 +13610,7 @@ if (likely(cmd == NULL)) { NsfMethodContext *mcPtr = methodObj->internalRep.twoPtrValue.ptr1; - int nsfObjectMethodEpoch = rst->objectMethodEpoch; + int nsfObjectMethodEpoch = rst->objectMethodEpoch; if (methodObj->typePtr == &NsfObjectMethodObjType && mcPtr->context == object @@ -13655,9 +13666,9 @@ if (likely(cmd == NULL)) { /* check for an instance method */ - NsfClass *currentClass = object->cl; + NsfClass *currentClass = object->cl; NsfMethodContext *mcPtr = methodObj->internalRep.twoPtrValue.ptr1; - int nsfInstanceMethodEpoch = rst->instanceMethodEpoch; + int nsfInstanceMethodEpoch = rst->instanceMethodEpoch; #if defined(METHOD_OBJECT_TRACE) fprintf(stderr, "... method %p/%d '%s' type? %d context? %d nsfMethodEpoch %d => %d\n", @@ -13697,7 +13708,9 @@ * Skip entries until the first base class. */ do { - if (IsBaseClass(&classListPtr->cl->object)) {break;} + if (IsBaseClass(&classListPtr->cl->object)) { + break; + } classListPtr = classListPtr->nextPtr; } while (classListPtr->nextPtr != NULL); @@ -13707,6 +13720,7 @@ } if (methodObj->typePtr != Nsf_OT_tclCmdNameType && methodObj->typePtr != Nsf_OT_parsedVarNameType + && likely(cmd != NULL) ) { NsfMethodObjSet(interp, methodObj, &NsfInstanceMethodObjType, currentClass, nsfInstanceMethodEpoch, @@ -17332,7 +17346,7 @@ Tcl_Command cmd; hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); - for (; hPtr; hPtr = Tcl_NextHashEntry(&hSrch)) { + for (; hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { const char *key = Tcl_GetHashKey(cmdTablePtr, hPtr); NsfObject *childObject; @@ -19138,7 +19152,7 @@ Tcl_HashSearch hSrch; Tcl_HashEntry *hPtr; - for (hPtr = Tcl_FirstHashEntry(instanceTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(instanceTablePtr, &hSrch); hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfObject *inst = (NsfObject *)Tcl_GetHashKey(instanceTablePtr, hPtr); /*fprintf(stderr, " inst %p %s flags %.6x id %p baseClass %p %s\n", @@ -22104,7 +22118,7 @@ Tcl_HashSearch hSrch; hPtr = (tablePtr != NULL) ? Tcl_FirstHashEntry(tablePtr, &hSrch) : NULL; - for (; hPtr; hPtr = Tcl_NextHashEntry(&hSrch)) { + for (; hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { Var *val = TclVarHashGetValue(hPtr); Tcl_Obj *key = TclVarHashGetKey(val); if (pattern == NULL || Tcl_StringMatch(ObjStr(key), pattern)) { @@ -23335,7 +23349,7 @@ * We have to iterate over the elements */ for (hPtr = Tcl_FirstHashEntry(tablePtr, &hSrch); - hPtr; + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfObject *childObject; Tcl_Command origCmd; @@ -23494,7 +23508,7 @@ Tcl_HashEntry *hPtr; for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); - hPtr; + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { const char *key = Tcl_GetHashKey(cmdTablePtr, hPtr); @@ -26284,7 +26298,7 @@ Tcl_HashSearch ahSrch; Tcl_HashEntry *ahPtr = (aTable != NULL) ? Tcl_FirstHashEntry(TclVarHashTablePtr(aTable), &ahSrch) : 0; - for (; ahPtr; ahPtr = Tcl_NextHashEntry(&ahSrch)) { + for (; ahPtr != NULL; ahPtr = Tcl_NextHashEntry(&ahSrch)) { Tcl_Obj *eltNameObj; Var *eltVar; @@ -30344,7 +30358,8 @@ Tcl_HashEntry *hPtr; Tcl_HashSearch search; - for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); hPtr; + for (hPtr = Tcl_FirstHashEntry(tablePtr, &search); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&search)) { NsfObject *inst = (NsfObject *) Tcl_GetHashKey(tablePtr, hPtr); @@ -31021,7 +31036,8 @@ Tcl_HashSearch hSrch; Tcl_HashTable *cmdTablePtr = Tcl_Namespace_cmdTablePtr(ns); - for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(cmdTablePtr, &hSrch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { Tcl_Command cmd = Tcl_GetHashValue(hPtr); NsfObject *childObject = NsfGetObjectFromCmdPtr(cmd); @@ -31080,7 +31096,8 @@ Tcl_HashEntry *hPtr; Tcl_HashSearch hSrch; - for (hPtr = Tcl_FirstHashEntry(Tcl_Namespace_cmdTablePtr(object->nsPtr), &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(Tcl_Namespace_cmdTablePtr(object->nsPtr), &hSrch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { Tcl_Command cmd = Tcl_GetHashValue(hPtr); @@ -31104,7 +31121,8 @@ Tcl_HashSearch hSrch; for (hPtr = Tcl_FirstHashEntry(Tcl_Namespace_cmdTablePtr(((NsfClass *)object)->nsPtr), - &hSrch); hPtr; + &hSrch); + hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { Tcl_Command cmd = Tcl_GetHashValue(hPtr); Index: generic/nsfProfile.c =================================================================== diff -u -ra0faba200038c44cda56f3f421361563b4bd95d7 -r22f4e55c94ff56910d48c5b3a49ea6fd6bf80d2c --- generic/nsfProfile.c (.../nsfProfile.c) (revision a0faba200038c44cda56f3f421361563b4bd95d7) +++ generic/nsfProfile.c (.../nsfProfile.c) (revision 22f4e55c94ff56910d48c5b3a49ea6fd6bf80d2c) @@ -146,8 +146,8 @@ NsfProfileDebugCall(Tcl_Interp *interp, NsfObject *object, NsfClass *cl, const char *methodName, int objc, Tcl_Obj **objv) { NsfRuntimeState *rst; - Tcl_Obj *listObj; - Tcl_DString ds; + Tcl_Obj *listObj; + Tcl_DString ds; nonnull_assert(interp != NULL); nonnull_assert(methodName != NULL); @@ -233,7 +233,7 @@ static void ReportLine(Tcl_Interp *interp, int level, NsfRuntimeState *rst, const char *line) { Tcl_Obj *savedResultObj; - int prevProfileSetting; + int prevProfileSetting; nonnull_assert(interp != NULL); nonnull_assert(rst != NULL); @@ -268,13 +268,14 @@ * *---------------------------------------------------------------------- */ -static void NsfProfileFillTable(Tcl_HashTable *table, const char *keyStr, double totalMicroSec) nonnull(1) nonnull(2); +static void NsfProfileFillTable(Tcl_HashTable *table, const char *keyStr, double totalMicroSec) + nonnull(1) nonnull(2); static void NsfProfileFillTable(Tcl_HashTable *table, const char *keyStr, double totalMicroSec) { NsfProfileData *value; - Tcl_HashEntry *hPtr; - int isNew; + Tcl_HashEntry *hPtr; + int isNew; nonnull_assert(table != NULL); nonnull_assert(keyStr != NULL); @@ -308,11 +309,11 @@ */ static int Nsf_ProfileFilterObjCmd(ClientData cd, Tcl_Interp *interp, int objc, Tcl_Obj *CONST objv[]) { - int result; NsfShadowTclCommandInfo *ti; - struct timeval start; - const char *fullMethodName, *label; - Tcl_DString ds; + int result; + struct timeval start; + const char *fullMethodName, *label; + Tcl_DString ds; assert(cd); @@ -452,7 +453,7 @@ int i; for (i = 0; i < oc; i++) { - int nrArgs = 0; + int nrArgs = 0; Tcl_Obj *nameObj = NULL; if (GetPair(interp, ov[i], 1, &nameObj, &nrArgs) == TCL_OK) { @@ -480,10 +481,11 @@ int i; for (i = 0; i < oc; i++) { - int nrArgs = 0; + int nrArgs = 0; Tcl_Obj *nameObj = NULL; if (GetPair(interp, ov[i], 0, &nameObj, &nrArgs) == TCL_OK) { + assert(nameObj != NULL); NsfReplaceCommandCleanup(interp, nameObj, &profilePtr->shadowedTi[i]); } } @@ -791,7 +793,7 @@ nonnull_assert(table != NULL); - for (hPtr = Tcl_FirstHashEntry(table, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(table, &hSrch); hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfProfileData *value = (NsfProfileData *) Tcl_GetHashValue(hPtr); ckfree((char *) value); @@ -854,18 +856,18 @@ static Tcl_Obj* NsfProfileGetTable(Tcl_Interp *interp, Tcl_HashTable *table) { - Tcl_Obj *list = Tcl_NewListObj(0, NULL); - Tcl_HashSearch hSrch; - Tcl_HashEntry *hPtr; + Tcl_Obj *list = Tcl_NewListObj(0, NULL); + Tcl_HashSearch hSrch; + Tcl_HashEntry *hPtr; nonnull_assert(interp != NULL); nonnull_assert(table != NULL); - for (hPtr = Tcl_FirstHashEntry(table, &hSrch); hPtr; + for (hPtr = Tcl_FirstHashEntry(table, &hSrch); hPtr != NULL; hPtr = Tcl_NextHashEntry(&hSrch)) { NsfProfileData *value = (NsfProfileData *) Tcl_GetHashValue(hPtr); - char *key = Tcl_GetHashKey(table, hPtr); - Tcl_Obj *subList = Tcl_NewListObj(0, NULL); + char *key = Tcl_GetHashKey(table, hPtr); + Tcl_Obj *subList = Tcl_NewListObj(0, NULL); Tcl_ListObjAppendElement(interp, subList, Tcl_NewStringObj(key, -1)); Tcl_ListObjAppendElement(interp, subList, Tcl_NewIntObj(value->microSec)); @@ -895,9 +897,9 @@ void NsfProfileGetData(Tcl_Interp *interp) { - Tcl_Obj *list = Tcl_NewListObj(0, NULL); - NsfProfile *profilePtr = &RUNTIME_STATE(interp)->profile; - long totalMicroSec; + Tcl_Obj *list = Tcl_NewListObj(0, NULL); + NsfProfile *profilePtr = &RUNTIME_STATE(interp)->profile; + long totalMicroSec; struct timeval trt; nonnull_assert(interp != NULL); @@ -933,8 +935,8 @@ */ void NsfProfileInit(Tcl_Interp *interp) { - NsfProfile *profilePtr = &RUNTIME_STATE(interp)->profile; - struct timeval trt; + NsfProfile *profilePtr = &RUNTIME_STATE(interp)->profile; + struct timeval trt; nonnull_assert(interp != NULL);