Clone
ssoberni <stefan.sobernig@wu-wien.ac.at>
committed
on 04 Nov 10
Squashed commit of the following:
commit 370f47d26099dd8cda4125de67048461edb797a9
Author: ssoberni <stefan.sobernig@wu-wien.ac.at>
Date: T… Show more
Squashed commit of the following:

commit 370f47d26099dd8cda4125de67048461edb797a9

Author: ssoberni <stefan.sobernig@wu-wien.ac.at>

Date:   Thu Nov 4 10:56:11 2010 +0100

   Due to recent changes in InterpColonVarResolver() to handle the

   slow-path execution the byte-compiled [variable], an unwanted

   interaction between ::nsf::setter, *certain* per-object namespaces,

   and the ColonCmd()-based invocation of setter methods became

   visible. In short: Given a pre-existing Tcl namespace and the

   colon-prefixed call specification to a setter method,

   InterpColonVarResolver() handles the var resolution request issued by

   the setter method (or SetInstVar(), more precisely). In a

   colon-prefixed call, the Tcl_Obj carrying the setter method name and

   used to lookup the object variable contains the ":". At the same time,

   the per-object namespace causes the TCL_NAMESPACE_ONLY flag to be set

   which causes InterpColonVarResolver() to pass on the request. In this

   setting, we end up with colon-prefixed object variables! See

   tests/parameter.test for an explanatory test case. For the time being,

   I fixed this by preserving and using the original, colon-free Tcl_Obj

   indicating the variable name in the client data structure of the

   settercmd.

Show less