Index: generic/predefined.xotcl =================================================================== diff -u -rf4e75c452cf99c87ad8705c954cb9548652873fa -r5a0750dc422574bc5ae91d9b58c64b8f5713d405 --- generic/predefined.xotcl (.../predefined.xotcl) (revision f4e75c452cf99c87ad8705c954cb9548652873fa) +++ generic/predefined.xotcl (.../predefined.xotcl) (revision 5a0750dc422574bc5ae91d9b58c64b8f5713d405) @@ -565,14 +565,16 @@ } ::xotcl::RelationSlot protected method delete_value {obj prop old value} { if {[string first * $value] > -1 || [string first \[ $value] > -1} { - # string contains meta characters + # value contains globbing meta characters if {${:elementtype} ne "" && ![string match ::* $value]} { - # prefix string with ::, since all object names have leading :: + # prefix glob pattern with ::, since all object names have leading :: set value ::$value } return [lsearch -all -not -glob -inline $old $value] } elseif {${:elementtype} ne ""} { + # value contains no globbing meta characters, but elementtype is given if {[string first :: $value] == -1} { + # get fully qualified name if {![::xotcl::is $value object]} { error "$value does not appear to be an object" }