[jdom-interest] Bug in parseData(String rawData) in ProcessingInstruction.java

=?big5?B?QWxiZXJ0IENoYW5nIC0gsWmp3Q==?= albert_chang at tnce.com.tw
Mon Apr 15 00:03:52 PDT 2002

Dear all:
          <?pi href =  ¡¨http://www.jdom.org¡¨  media = ¡§wap¡¨?> <!--
Please note the spaces inserted between the equal, ¡¥=¡¦, signs.-->
won¡¦t be parsed properly if you set data via the following code snippet.
ProcessingInstruction pi(¡§pi¡¨, ¡§href =   \¡¨http://www.jdom.org\¡¨  media
=  \¡§wap\¡¨¡¨); 
// Please note the spaces inserted between the equal, ¡¥=¡¦, signs.
          After hacking into the source, org.jdom.ProcessingInstuction.java,
it failed on the privte function:
private Map paresData(String rawData), while parsing the media attribute.
          The suspicious code is ¡§pos += value.lenth() + 1;¡¨ in code
sinppet below:
  if (currentChar == '=') {
                    name = inputData.substring(startName, pos).trim();
                    value =
                    // A null value means a parse error and we return empty!
                    if (value == null) {
                        return new HashMap();
                    pos += value.length() + 1;  // skip over equals and
*     Since there are extra spaces between ¡¥=¡¦ sign for the first ¡§href¡¨
attribute, we shouldn¡¦t just naiively use pos += value.length() + 1 to skip
over value. This will not move to the media attribute, but rather between
the value of href.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://jdom.org/pipermail/jdom-interest/attachments/20020415/541ec3f7/attachment.htm

More information about the jdom-interest mailing list