[Expat-discuss] Expat and Open Watcom

Michael Greene greenemk at cox.com
Wed Jun 28 02:57:43 CEST 2006


Michael Greene wrote:
> Karl Waclawek wrote:
>> Michael Greene wrote:
>>> Karl,
>>>
>>> The source of my "out of memory" errors when running XML_TEST_SUITE 
>>> are due to the test file size and using readfilemap.c. The test suite 
>>> files are size 0, so malloc( 0 ) returns NULL and I get a false "out 
>>> of memory" error. I assume that any build that uses readfilemap.c 
>>> would have this return. Would it be better to do this:
>>>
>>>    nbytes = sb.st_size;
>>> +  if(nbytes == 0) {
>>> +    close(fd);
>>> +    return 1;
>>> +  }
>>>    p = malloc(nbytes);
>>>    if (!p) {
>>> +    close(fd);
>>>      return 0;
>>>    }
>>>
>>> So that nbytes is checked for 0 size and return 1 ?
>>>
>>> With this change and a couple other defines I am at:
>>>
>>> Passed: 1773
>>> Failed: 37
>>>
>>>
>> That sounds pretty good!
>>
>> Would you please file a bug report for readfilemap.c?
>> I'll then commit your patch.
>>
>> Thanks,
>>
>> Karl
>>
> 
> Submitted #1513566 - sorry about the WATCOM define include.
> 
> MikeG

Karl,

Just as a side note I compiled expat 2.0.0 with my linux system to 
verify my Open Watcom build results. Good news my Open Watcom version 
only gives me these additional errors over the linux - gcc build:

Output differs: xmltest/valid/sa/069.xml
Output differs: xmltest/valid/sa/076.xml
Output differs: xmltest/valid/sa/090.xml
Output differs: xmltest/valid/sa/091.xml

However, the linux - gcc build had these errors (not in order):

003.ent: Invalid argument
In xmltest/valid/ext-sa/: 003.xml:5:5: error in processing external 
entity reference

010.ent: Invalid argument
In xmltest/valid/ext-sa/: 010.xml:5:5: error in processing external 
entity reference

001.ent: Invalid argument
In xmltest/valid/not-sa/: 001.xml:3:1: error in processing external 
entity reference

003-2.ent: Invalid argument
In xmltest/valid/not-sa/: 003-1.ent:3:23: error in processing external 
entity reference

null.ent: Invalid argument
In sun/valid/: ext01.xml:9:21: error in processing external entity reference

p31pass1.dtd: Invalid argument
In oasis/: p31pass1.xml:1:58: error in processing external entity reference

050.xml: Invalid argument

Expected well-formed: oasis/p39fail3.xml

Reason I call this out is because I think it is the same problem in 
unixfilemap.c. The mmap( ) returns failed because of zero file size when 
it should have a check like readfilemap.c (my fix) and win32filemap.c. 
It is rare for me to start linux and just as rare to use gcc.

MikeG


More information about the Expat-discuss mailing list