Index: README.release =================================================================== diff -u -r8ec912177de5c542eb22a9a135d3624322ae20c9 -r5163190ade6f6a2abcd8b7f0265f74457557a61c --- README.release (.../README.release) (revision 8ec912177de5c542eb22a9a135d3624322ae20c9) +++ README.release (.../README.release) (revision 5163190ade6f6a2abcd8b7f0265f74457557a61c) @@ -52,7 +52,7 @@ - tag version in git and commit git tag -a 2.0b5 -m 2.0b5 git push --tags - git push : 2.0b5 + git push : 2.0.0 # git push --follow-tags # git push commit Index: generic/nsf.c =================================================================== diff -u -r2298203da43f1d10b0e1151944606a934fb6b727 -r5163190ade6f6a2abcd8b7f0265f74457557a61c --- generic/nsf.c (.../nsf.c) (revision 2298203da43f1d10b0e1151944606a934fb6b727) +++ generic/nsf.c (.../nsf.c) (revision 5163190ade6f6a2abcd8b7f0265f74457557a61c) @@ -26169,7 +26169,7 @@ CmdListAddSorted(&nclopt->isClassMixinOf, cl->object.id, NULL); } else { NsfLog(interp, NSF_LOG_WARN, - "Problem registering %s as a mixin of %s\n", + "Problem registering %s as a class mixin of %s\n", ObjStr(valueObj), ClassName(cl)); } } @@ -26357,13 +26357,14 @@ for (cmds = newMixinCmdList; cmds; cmds = cmds->nextPtr) { NsfObject *nObject = NsfGetObjectFromCmdPtr(cmds->cmdPtr); + if (nObject) { nclopt = NsfRequireClassOpt((NsfClass *) nObject); CmdListAddSorted(&nclopt->isObjectMixinOf, object->id, NULL); } else { NsfLog(interp, NSF_LOG_WARN, - "Problem registering %s as a mixin of %s\n", - ObjStr(valueObj), ClassName(cl)); + "Problem registering %s as a object mixin of %s\n", + ObjStr(valueObj), ObjectName(object)); } } Index: generic/nsfObj.c =================================================================== diff -u -r8e0b30355e24d03a7baba8b701cbab2aa7694157 -r5163190ade6f6a2abcd8b7f0265f74457557a61c --- generic/nsfObj.c (.../nsfObj.c) (revision 8e0b30355e24d03a7baba8b701cbab2aa7694157) +++ generic/nsfObj.c (.../nsfObj.c) (revision 5163190ade6f6a2abcd8b7f0265f74457557a61c) @@ -499,12 +499,16 @@ Mixinreg *mixinRegPtr = obj->internalRep.twoPtrValue.ptr1; /* - * We got a cmd, but this might be already deleted. + * We got a mixin with an included cmd, but both might be already deleted. */ - if ((Tcl_Command_flags(mixinRegPtr->mixin->object.id) & CMD_IS_DELETED)) { + if ((mixinRegPtr->mixin->object.flags & NSF_DELETED) != 0U + || (Tcl_Command_flags(mixinRegPtr->mixin->object.id) & CMD_IS_DELETED) != 0U) { + /* * The cmd is deleted. retry to refetch it. */ + /*fprintf(stderr, "... we have to refetch \n");*/ + if (MixinregSetFromAny(interp, obj) == TCL_OK) { mixinRegPtr = obj->internalRep.twoPtrValue.ptr1; } else { @@ -514,6 +518,7 @@ *guardObj = mixinRegPtr->guardObj; *clPtr = mixinRegPtr->mixin; + return TCL_OK; }