summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ChangeLog10
-rw-r--r--generic/tclNamesp.c20
2 files changed, 18 insertions, 12 deletions
diff --git a/ChangeLog b/ChangeLog
index 3821263..dd13ad0 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2004-09-11 Don Porter <dgp@users.sourceforge.net>
+
+ * 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.
+
2004-09-10 Kevin Kenny <kennykb@acm.org>
* library/clock.tcl: Fixed a bug where %z always put a plus
diff --git a/generic/tclNamesp.c b/generic/tclNamesp.c
index 9a60232..a524f12 100644
--- a/generic/tclNamesp.c
+++ b/generic/tclNamesp.c
@@ -21,7 +21,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.50 2004/09/09 17:09:34 dgp Exp $
+ * RCS: @(#) $Id: tclNamesp.c,v 1.51 2004/09/10 18:15:25 dgp Exp $
*/
#include "tclInt.h"
@@ -1814,8 +1814,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,
@@ -1858,17 +1857,14 @@ TclGetNamespaceForQualName(interp, qualName, cxtNsPtr, flags,
/*
* Determine the context namespace nsPtr in which to start the primary
- * search. If TCL_NAMESPACE_ONLY or TCL_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
+ * 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.
*/
- if (flags & (TCL_NAMESPACE_ONLY | TCL_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) {