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 |