Bug in xmerl_scan or xmerl_eventp?

Jani Hakala <>
Fri Feb 18 12:57:04 CET 2005


Hi,

When I try to parse an xml-file using xmerl_eventp:file_sax
I get an error about badarg in xmerl_scan:scan_prolog (around line 602)
     {Decl,T2, S2}=scan_xml_decl(T, S),
     Encoding=Decl#xmlDecl.encoding

This happens only if there's <?xml version="1.0" encoding="iso_8859-1"?>
at the beginning of my xml file. 

scan_xml_decl seems to call return_xml_decl after "?>".
return_xml_decl calls hook_fun that calls xmerl:export_element, which
returns CBstate in case of #xmlDecl.

hook_fun returns {CBstate,xmerl_scan:user_state({CBs,CBstate},S)} so
in return_xml_decl 
    {Ret, S3} = Hook(Decl, S2),	
    {Ret, T1, S3}.

Ret is now something else than a #xmlDecl, so Decl#xmlDecl.encoding
fails later in scan_prolog. 

I'm using debian packaged erlang 10.b.1a-2. 

ucs.erl:-vsn('0.3').
xmerl_eventp.erl:-vsn('0.19').
xmerl_scan.erl:-vsn('0.20').
xmerl_validate.erl:-vsn('0.1').
xmerl_xlate.erl:-vsn('0.6').
xmerl_xpath.erl:-vsn('0.13').
xmerl_xpath_pred.erl:-vsn('0.6').
xmerl_xpath_scan.erl:-vsn('0.6').
xmerl_xs.erl:-vsn('0.19').

xmerl_eventp.erl:-date('03-09-17').
xmerl_scan.erl:-date('03-09-16').
xmerl_validate.erl:-date('27-11-02').
xmerl_xlate.erl:-date('00-09-22').
xmerl_xpath.erl:-date('01-02-21').
xmerl_xpath_pred.erl:-date('00-09-22').
xmerl_xpath_scan.erl:-date('00-09-21').
xmerl_xs.erl:-date('03-02-03').

Jani Hakala



More information about the erlang-bugs mailing list