Error joining only chatroom "JABBER" on jabbim.sk

Bug #157866 reported by finder_o on 2007-10-27
2
Affects Status Importance Assigned to Milestone
Coccinella
High
Mats

Bug Description

You can reproduce this error every time, if you step in chatroom JABBER on jabbim.sk
Coccinella v 0.96.2
It is identical error as there is describe on sourceforge.net, number 1798277.

Mats (matsben) on 2007-10-28
Changed in coccinella:
importance: Undecided → High
status: New → Confirmed
Mats (matsben) wrote :

It is a JID containing a "!" (<email address hidden>/Fox!MURDER) where ! is a protected character in TreeCtrl that creates the problem. I am backslashing all protected chars but this seems not to help. See below:

() 1 % set tag {jid <email address hidden>/Fox!MURDER}
jid <email address hidden>/Fox!MURDER
() 2 % treeutil::protect $tag
jid <email address hidden>/Fox\!MURDER
() 3 % set T $RosterTree::T
.jmain.f.ro.box.tree
() 4 % $T item id [list tag $tag]
Invalid boolean operator in tag search expression
() 5 % set ptag [treeutil::protect $tag]
jid <email address hidden>/Fox\!MURDER
() 6 % $T item id [list tag $ptag]
Invalid boolean operator in tag search expression

Mats (matsben) wrote :

From TreeCtrl docs:
Columns and items may have any number of tags associated with them. A tag is just a string of characters, and it may take any form, including that of an integer, although the characters '(', ')', '&', '|', '^' and '!' should be avoided.

It turns out that backslashing works for all those characters except "!".

Mats (matsben) wrote :

Instead of using TreeCtrl's built in tagging I instead use an external array which is completely free of constraints.

Changed in coccinella:
status: Confirmed → Fix Committed
finder_o (oto-finder) wrote :

It's very fine in so short time to correct error. Using new (own) array for 'tag' is big change.
I think, that some old code you would need overwrite yet. Old version of 'tag' maybe remain in deleting of node of TreeControl.
I have used the cvs version of Coccinella (0.96.3) and I get in chatroom new error, if any user become into unavailable or away state. Error is in attachment of this comment.
The Coccinella is well program and it look wonderful.

This bug was fixed some day ago. Thanks for your testing. To cleanup
the tag array I register for ItemDelete events with the tree widget
that does the cleanup automatically, like:

    # This automatically cleans up the tag array.
    $T notify bind UsersTreeTag <ItemDelete> {
 foreach item %i {
     ::GroupChat::TreeUnsetTags %T $item
 }
    }
    bindtags $T [concat UsersTreeTag [bindtags $T]]

...

proc ::GroupChat::TreeUnsetTags {T item} {
    variable tag2item

    set tag [$T item element cget $item cTag eText -text]
    unset -nocomplain tag2item($T,$tag)
}

The docs:
If any items are going to be deleted, then an <ItemDelete> event event
is generated just before the items are deleted.

 So I think it should be OK.

/Mats

sander (s-devrieze) on 2007-12-04
Changed in coccinella:
milestone: none → 0.96.4
sander (s-devrieze) on 2007-12-14
Changed in coccinella:
assignee: nobody → matsben
status: Fix Committed → Fix Released
To post a comment you must log in.
This report contains Public information  Edit
Everyone can see this information.

Other bug subscribers

Bug attachments