Index: generic/nsf.c =================================================================== diff -u -rdf2936cf5ecc9a2d5473804c9b5e49b67fc02f50 -r698bd2d3c7d19109c7bff8ffbf9b50fec1b1e9c3 --- generic/nsf.c (.../nsf.c) (revision df2936cf5ecc9a2d5473804c9b5e49b67fc02f50) +++ generic/nsf.c (.../nsf.c) (revision 698bd2d3c7d19109c7bff8ffbf9b50fec1b1e9c3) @@ -13828,26 +13828,24 @@ * If the pattern looks like fully qualified, we match against the * fully qualified name. */ - if (*key == '_' && *(key+1) == '_' && *(key+2) == '_' && *(key+3) == '_') { - Tcl_Obj *value = Nsf_ObjGetVar2((Nsf_Object *)childObject, interp, - NsfGlobalObjs[NSF_SETTERNAME], NULL, 0); - if (value) { - char *valueString = ObjStr(value); - match = fullQualPattern ? - Tcl_StringMatch(ObjectName(childObject), pattern) : - Tcl_StringMatch(valueString, pattern); + if (fullQualPattern) { + match = Tcl_StringMatch(ObjectName(childObject), pattern); + } else { + /* + * do we have a mangled name of a private property/variable? + */ + if (*key == '_' && *(key+1) == '_' && *(key+2) == '_' && *(key+3) == '_') { + Tcl_Obj *value = Nsf_ObjGetVar2((Nsf_Object *)childObject, interp, + NsfGlobalObjs[NSF_SETTERNAME], NULL, 0); + match = value ? Tcl_StringMatch(ObjStr(value), pattern) : 0; + /*fprintf(stderr, "pattern <%s> fullQualPattern %d child %s key %s %p <%s> match %d\n", + pattern, fullQualPattern, ObjectName(childObject), key, + value, value ? ObjStr(value) : "", match);*/ } else { - match = 0; + match = Tcl_StringMatch(key, pattern); } - /*fprintf(stderr, "pattern <%s> fullQualPattern %d child %s key %s %p <%s> match %d\n", - pattern, fullQualPattern, ObjectName(childObject), key, - value, value ? ObjStr(value) : "", match);*/ - } else { - match = fullQualPattern ? - Tcl_StringMatch(ObjectName(childObject), pattern) : - Tcl_StringMatch(key, pattern); } if (!match) { continue;