diff options
author | dgp <dgp@noemail.net> | 2004-09-10 18:22:08 (GMT) |
---|---|---|
committer | dgp <dgp@noemail.net> | 2004-09-10 18:22:08 (GMT) |
commit | bc4e54764044790180100f9e081f8f8e1a99249f (patch) | |
tree | e6ae0a7a7c69f1282a6d6065636be290c225da10 /generic/tclNamesp.c | |
parent | 51a39f023a92bd534cf82c51c0b2c1514b3143f8 (diff) | |
download | tcl-bc4e54764044790180100f9e081f8f8e1a99249f.zip tcl-bc4e54764044790180100f9e081f8f8e1a99249f.tar.gz tcl-bc4e54764044790180100f9e081f8f8e1a99249f.tar.bz2 |
* generic/tclNamespace.c (TclGetNamespaceForQualName): Resolved
longstanding inconsistency in the treatment of the TCL_NAMESPACE_ONLY
flag revealed by testing the 2004-09-09 commits against Itcl.
TCL_NAMESPACE_ONLY now acts as specified in the pre-function
comment, forcing resolution in the passed in context namespace.
It has been incorrectly forcing resolution in the interp's current
namespace.
FossilOrigin-Name: f023e9218c6181665ea8c1f8997d7660429e4e94
Diffstat (limited to 'generic/tclNamesp.c')
-rw-r--r-- | generic/tclNamesp.c | 20 |
1 files changed, 8 insertions, 12 deletions
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c index 27aff8d..7e238d0 100644 --- a/generic/tclNamesp.c +++ b/generic/tclNamesp.c @@ -19,7 +19,7 @@ * See the file "license.terms" for information on usage and redistribution * of this file, and for a DISCLAIMER OF ALL WARRANTIES. * - * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.3 2004/09/09 17:12:13 dgp Exp $ + * RCS: @(#) $Id: tclNamesp.c,v 1.31.2.4 2004/09/10 18:22:09 dgp Exp $ */ #include "tclInt.h" @@ -1658,8 +1658,7 @@ TclGetNamespaceForQualName(interp, qualName, cxtNsPtr, flags, Namespace *cxtNsPtr; /* The namespace in which to start the * search for qualName's namespace. If NULL * start from the current namespace. - * Ignored if TCL_GLOBAL_ONLY or - * TCL_NAMESPACE_ONLY are set. */ + * Ignored if TCL_GLOBAL_ONLY is set. */ int flags; /* Flags controlling the search: an OR'd * combination of TCL_GLOBAL_ONLY, * TCL_NAMESPACE_ONLY, @@ -1702,17 +1701,14 @@ TclGetNamespaceForQualName(interp, qualName, cxtNsPtr, flags, /* * Determine the context namespace nsPtr in which to start the primary - * search. If TCL_NAMESPACE_ONLY or FIND_ONLY_NS was specified, search - * from the current namespace. If the qualName name starts with a "::" - * or TCL_GLOBAL_ONLY was specified, search from the global - * namespace. Otherwise, use the given namespace given in cxtNsPtr, or - * if that is NULL, use the current namespace context. Note that we - * always treat two or more adjacent ":"s as a namespace separator. + * search. If the qualName name starts with a "::" or TCL_GLOBAL_ONLY + * was specified, search from the global namespace. Otherwise, use the + * namespace given in cxtNsPtr, or if that is NULL, use the current + * namespace context. Note that we always treat two or more + * adjacent ":"s as a namespace separator. */ - if (flags & (TCL_NAMESPACE_ONLY | FIND_ONLY_NS)) { - nsPtr = (Namespace *) Tcl_GetCurrentNamespace(interp); - } else if (flags & TCL_GLOBAL_ONLY) { + if (flags & TCL_GLOBAL_ONLY) { nsPtr = globalNsPtr; } else if (nsPtr == NULL) { if (iPtr->varFramePtr != NULL) { |