Index: generic/xotcl.c =================================================================== diff -u -r8f2c993e02fe43f23c7e1653d05f6e298c23b2b2 -r8274c68ad85f12b1e4a41a01273079405fa865ef --- generic/xotcl.c (.../xotcl.c) (revision 8f2c993e02fe43f23c7e1653d05f6e298c23b2b2) +++ generic/xotcl.c (.../xotcl.c) (revision 8274c68ad85f12b1e4a41a01273079405fa865ef) @@ -5050,7 +5050,17 @@ static int CheckVarName(Tcl_Interp *interp, const char *varNameString) { - if (strstr(varNameString, "::") || *varNameString == ':') { + /* + * Check, whether the provided name is save to be used in the + * resolver. We do not want to get interferences with namespace + * resolver and such. In an first attempt, we disallowed occurances + * of "::", but we have to deal as well with e.g. arrayName(::x::y) + * + * TODO: more general and efficient solution to disallow e.g. a::b + * (check for :: until parens) + */ + /*if (strstr(varNameString, "::") || *varNameString == ':') {*/ + if (*varNameString == ':') { return XOTclVarErrMsg(interp, "variable name \"", varNameString, "\" must not contain namespace separator or colon prefix", (char *) NULL); @@ -8537,10 +8547,10 @@ * see Tcl_VariableObjCmd ... */ if (arrayPtr) { - return XOTclVarErrMsg(interp, "can't make instvar ", ObjStr(varName), + return XOTclVarErrMsg(interp, "can't make instance variable ", ObjStr(varName), " on ", objectName(object), - ": variable cannot be an element in an array;", - " use an alias or objeval.", (char *) NULL); + ": Variable cannot be an element in an array;", + " use e.g. an alias.", (char *) NULL); } newName = varName;