Done. Cheers,
Hernán 2014-09-08 10:18 GMT-03:00 Tommaso Dal Sasso <[email protected]>: > > On 08/09/14 15:16, Hernán Morales Durand wrote: > >> Tommaso I can give you access to the repository if you send me your >> SmalltalkHub user name. >> Cheers, >> >> Hernán >> >> Sure, it is dalsat > Thanks, > > Tommaso > > 2014-09-08 6:28 GMT-03:00 Tommaso Dal Sasso <[email protected] >> <mailto:[email protected]>>: >> >> >> Hello everybody, >> >> I found a bug while playing with the XMLPullParser: >> >> When using XML entities encoded in hexadecimal the parser throws >> an exception. >> For example: 
 is the hexadecimal encoding of which is >> the line feed. >> If you try to parse: '<tag contents="one
two" />' you get a >> "Expected Number" error. >> >> >> I investigated the problem, and found that it is caused by the >> method XMLPullParser>>readNumberBase: >> >> If the base of the parsed number is not 10, it executes the >> following lines: >> numberString := self nextUpTo: $;. >> self stream skip: -1. >> [...] >> >> However, the method nextUpTo: does not exist. A MNU is then raised >> and handled in nextCharReference: by a greedy >> "on: Error do: [:ex | self errorExpected: 'Number.']." >> thus causing the exception. >> >> The solution is either to implement nextUpTo: or to change it in >> one of the two existing methods: nextUpToAll: or >> nextTrimmedBlanksUpTo: >> Example: numberString := self nextUpToAll: ';'. >> >> Also, in the following line, it calls the accessor "stream", which >> does not exist and causes the same problem. >> The solution here is to change >> self stream skip: -1. >> into >> stream skip: -1. >> >> The following two test cases show the problem. The first one shows >> the correct behavior: >> >> XMLPullParserTest>>testASCIIEntity >> | parser | >> >> parser := XMLPullParser parse: ' >> <tag contents="one two" />'. >> >> self assert: (parser next at: #contents) equals: (Character lf >> join: #(one two)) >> >> >> The second one shows the error: >> >> XMLPullParserTest>>testUnicodeEntity >> | parser | >> >> parser := XMLPullParser parse: ' >> <tag contents="one
two" />'. >> >> self assert: (parser next at: #contents) equals: (Character lf >> join: #(one two)) >> >> >> I hope it is clear enough. I can also commit the fix myself, if >> you give me write access. >> >> Thanks, >> Tommaso >> >> >> > >
