Index: generic/nsf.c =================================================================== diff -u -rdadf28efd0707ae40076f49837e6b45ad5b2a989 -re5a42b6e8b73958a2532bfe604f16c3cab32cb62 --- generic/nsf.c (.../nsf.c) (revision dadf28efd0707ae40076f49837e6b45ad5b2a989) +++ generic/nsf.c (.../nsf.c) (revision e5a42b6e8b73958a2532bfe604f16c3cab32cb62) @@ -8894,7 +8894,7 @@ /* * Iterate over the subclass hierarchy. */ - for (; likely(subClasses != NULL); subClasses = subClasses->nextPtr) { + do { Tcl_HashSearch hSrch; Tcl_HashEntry *hPtr; Tcl_HashTable *instanceTablePtr; @@ -8923,7 +8923,8 @@ object->flags &= ~NSF_MIXIN_ORDER_VALID; } } - } + subClasses = subClasses->nextPtr; + } while (subClasses != NULL); } @@ -9334,14 +9335,16 @@ nonnull_assert(name != NULL); nonnull_assert(clPtr != NULL); - for (; likely(mixinList != NULL); mixinList = mixinList->nextPtr) { + do { NsfClass *foundCl = NsfGetClassFromCmdPtr(mixinList->cmdPtr); if ((foundCl != NULL) && SearchCMethod(foundCl, name, &cmd)) { *clPtr = foundCl; return cmd; } - } + mixinList = mixinList->nextPtr; + } while (mixinList != NULL); + return NULL; }