harmony-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Tim Ellison <t.p.elli...@gmail.com>
Subject Re: [testing] M12 testing on Windows x86
Date Thu, 26 Nov 2009 18:44:59 GMT
On 26/Nov/2009 17:00, Oliver Deakin wrote:
> A little more progress.
> It looks like we're reading javax\swing\text\html\parser\html32.bdtd
> (which is where the ZipFile/ZipEntry classes come in). I see that with
> the M12 version of those classes we end up throwing an ASN1Exception at
> line 886 of BerInputStream.java (right at the start of it's read()
> method). This unravels the stack up to ParserDelegator.createDTD() which
> has a "try ... catch(Exception e) { // do nothing }" around the DTD
> read. The exception is ignored and we carry on, but the DTD has not been
> fully populated and it looks like this is the cause of the html not
> being processed correctly and the tests failing. Needless to say, this
> exception is not thrown with the M11 version of ZipFile/ZipEntry.
> 
> The question now is why offset==buffer.length at the start of the
> BerInputStream.read() call with the new ZipFile/ZipEntry classes. Ill
> keep digging.

I'll bet you a beer that it is our friend available() again...

Consider this:

 static final String NAME = "javax/swing/text/html/parser/html32.bdtd";

 public void test() throws IOException {
    JarFile jar = new JarFile("swing.jar");
    ZipEntry ze = jar.getEntry(NAME);
    InputStream is = jar.getInputStream(ze);

    System.out.println("Size = " + ze.getSize());
    System.out.println("Available = " + is.available());

    jar.close();
 }

On Harmony it prints:
Size = 51140
Available = 1

On the RI it prints:
Size = 51140
Available = 51140

I know the arguments that say available() should not be used to judge
the total number of bytes that can be read, but it seems that a number
of applications (including our generated parser?) use it in this way.

I haven't tried changing it yet[1], but I'll take that bet if you want :-)

Regards,
Tim

[1] I'm supposed to be packing for a long weekend away, so I'll be quiet
for the next few days.

Mime
View raw message