I found this oddity in XOTcl_DeleteCommandFromToken:
XOTclCallStackContent *csc = cs->top;
for (; csc > cs->content; csc--) { - if (csc->cmdPtr == cmd) - csc->cmdPtr = NULL; - break; + if (csc->cmdPtr == cmd) { + csc->cmdPtr = NULL; + break; + } } return Tcl_DeleteCommandFromToken(in, cmd); }
Is my fix correct, or is there some magic reason why you would want to break after the first 'if' check no matter what?
BTW - any conditionals without { } is BAD CODE, for exactly the above reason.
Jeff Hobbs, The Tcl Guy http://www.ActiveState.com/, a division of Sophos
Hi Jeff,
On Tuesday 30 November 2004 20:57, Jeff Hobbs wrote:
I found this oddity in XOTcl_DeleteCommandFromToken:
XOTclCallStackContent *csc = cs->top;
for (; csc > cs->content; csc--) {
- if (csc->cmdPtr == cmd)
csc->cmdPtr = NULL;
- break;
if (csc->cmdPtr == cmd) {
csc->cmdPtr = NULL;
break;
} return Tcl_DeleteCommandFromToken(in, cmd);}
}
Is my fix correct, or is there some magic reason why you would want to break after the first 'if' check no matter what?
The code tries to avoid dangling references from the stack to cmds. The correct fix is to remove the break.
BTW - any conditionals without { } is BAD CODE, for exactly the above reason.
agreed.
-gustaf