|
From: Mats B. <ma...@pr...> - 2002-05-18 13:03:42
|
Running the TclExpat parser using the script and data below crashes.
I'm using tclexpat20.dll and tclxml20.dll from the ActiveState distro
on Windows 2000. The crash is reproducible. When testing be sure that you are
using the 'expat' parser class. The 'tcl' class works fine.
Any ideas anyone?
Mats Bengtsson
--------------------------------------
package require xml 2.0
proc HandleStart {name attlist args} {
if {[llength $attlist] > 0} {
puts "==> (Start) '$name' has attributes '$attlist'"
} else {
puts "==> (Start) '$name'"
}
if {[llength $args]} {puts " args=$args"}
}
proc HandleEnd {name args} {
global myParser
puts "==> (End) '$name'"
}
proc HandleText {data} {
puts "==> (Data) '$data'"
}
set parser [xml::parser]
set classes [::xml::parserclass info names]
$parser configure \
-final 0 \
-reportempty 1 \
-elementstartcommand HandleStart \
-elementendcommand HandleEnd \
-characterdatacommand HandleText \
-ignorewhitespace 1 \
-defaultexpandinternalentities 0
set data {<?xml version='1.0'?><stream:stream
xmlns:stream='http://etherx.jabber.org/streams' id='3CE5FE2E'
xmlns='jabber:client' from='athlon.se'>\
<iq type='result' id='1001'/>\
<iq type='result' id='1002' from='sg...@at.../home'><query
xmlns='jabber:iq:roster'><item jid='ma...@at...' subscription='both'/></query></iq>\
<iq type='result' id='1003' from='sg...@at.../home' to='sg...@at.../home'/>\
<iq type='result' id='1004' to='sg...@at.../home' from='athlon.se'><service
xmlns='jabber:iq:browse' type='jabber' jid='athlon.se' name='Jabber Server'>\
<service type='jud' jid='jud.athlon.se' name='Jabber User Directory'>\
<ns>jabber:iq:search</ns>\
<ns>jabber:iq:register</ns>\
</service>\
<conference type='public' jid='conference.athlon.se' name='Public Conferencing'/>\
</service></iq>\
<iq type='result' id='1005' to='sg...@at.../home'
from='conference.athlon.se'><conference xmlns='jabber:iq:browse' type='public'
name='Public Chatrooms'><conference type='public'
jid='he...@co...' name='Assistance Zone (0)'/><conference
type='public' jid='gi...@co...' name='Girls (0)'/><conference
type='public' jid='ad...@co...' name='Adminz only (0)'/></conference></iq>\
<iq type='set'><query xmlns='jabber:iq:roster'><item jid='ko...@at...' subscription='none'/></query></iq>\
<iq type='result' id='1006' from='sg...@at.../home'
to='sg...@at.../home'/><iq type='set'><query xmlns='jabber:iq:roster'><item
jid='ko...@at...' subscription='none' ask='subscribe'/></query></iq>\
<presence to='sg...@at...' type='subscribe' from='ko...@at...'/>\
<presence to='sg...@at...' type='subscribed' from='ko...@at...'/><iq
type='set'><query xmlns='jabber:iq:roster'><item jid='ko...@at...'
subscription='to'/></query></iq><presence from='ko...@at.../home'
to='sg...@at...'><x xmlns='jabber:x:delay' from='ko...@at.../home'
stamp='20020518T07:10:47'/><x xmlns='jabber:x:delay'
from='ko...@at.../home' stamp='20020518T07:10:47'/></presence><presence
to='sg...@at...' type='subscribe' from='ko...@at...'/>\
<presence from='ko...@at.../home' to='sg...@at...'><x
xmlns='jabber:x:delay' from='ko...@at.../home'
stamp='20020518T07:10:47'/><x xmlns='jabber:x:delay'
from='ko...@at.../home' stamp='20020518T07:10:47'/></presence>\
<presence from='ko...@at.../home' to='sg...@at...'><x
xmlns='jabber:x:delay' from='ko...@at.../home'
stamp='20020518T07:10:47'/><x xmlns='jabber:x:delay'
from='ko...@at.../home' stamp='20020518T07:10:47'/></presence><iq
type='set'><query xmlns='jabber:iq:roster'><item jid='ko...@at...' subscription='both'/></query></iq>\
<presence from='ko...@at.../home' to='sg...@at...'><x
xmlns='jabber:x:delay' from='ko...@at.../home'
stamp='20020518T07:10:47'/><x xmlns='jabber:x:delay'
from='ko...@at.../home' stamp='20020518T07:10:47'/></presence>\
}
$parser parse $data
|