> At the very least, you should specify, exactly, one schema file that> shows 
> your problem.  Without a concrete test case, nobody can help you.> > Dale> 
> The shema file is MPEG7-2001.xsd which can be downloaded at 
> http://m7itb.nist.gov/Mpeg7-2001.xsdMy metadata file has the following 
> content:<Mpeg7 xmlns="urn:mpeg:mpeg7:schema:2001" 
 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"; 
 
       xmlns:mpeg7="urn:mpeg:mpeg7:schema:2001" 
 
       xsi:schemaLocation="urn:mpeg:mpeg7:schema:2001 Mpeg7-2001.xsd">
 
    <DescriptionMetadata>
 
        <Version>1.0</Version>
 
        <PrivateIdentifier>descriptionUnitExample</PrivateIdentifier>
 
    </DescriptionMetadata>
 
    <DescriptionUnit xsi:type="ScalableColorType" numOfCoeff="16" 
numOfBitplanesDiscarded="0">
 
        <Coeff> 1 2 3 4 5 6 7 8 9 0 1 2 3 4 5 6 </Coeff>
 
    </DescriptionUnit>
 
</Mpeg7>

If I don't put the mpeg7-2001.xsd in the same directory as the metadata file, 
my code doesn't crash the application

> OK, so your application is writing to memory it doesn't own.  If you run it 
> in the debugger, the debugger will break when the write occurs, and you can 
> see a stack trace.  From that point, you should be able to figure out the 
> problem.
> 

The problem occurs as soon as I call mpParser->parse(*memBufIS). I cannot work 
it out, so I posted the question here.

The strangest thing is my code works well with other metadata sets (e.g. Dublin 
Core). Again, here is my code:

XMLPlatformUtils::Initialize();
XERCES_CPP_NAMESPACE::XMLGrammarPoolImpl* GrammarPool = new 
XMLGrammarPoolImpl(XMLPlatformUtils::fgMemoryManager);
XERCES_CPP_NAMESPACE::XercesDOMParser* parser= new XercesDOMParser(0, 
XMLPlatformUtils::fgMemoryManager, GrammarPool); 

XercesDOMParser::ValSchemes valScheme = XercesDOMParser::Val_Always;
parser->setValidationScheme(valScheme);
parser->setDoNamespaces(true);
parser->setDoSchema(true);
parser->setValidationSchemaFullChecking(true);
parser->setIncludeIgnorableWhitespace(false);

MemBufInputSource* memBufIS = new MemBufInputSource(                            
                
                                                                      (const 
XMLByte*)pXMLString, // pXMLString is the data to be parsed
                                                                      
strlen(pXMLString),
                                                                      
"FromString", 
                                                                      false);
 parser->parse(*memBufIS); // CRASH here

The error message is:
"Unhandled exception at 0x... in foo.exe: 0xC0000005: Access violation writing 
location 0x...."
 
_________________________________________________________________
Fancy some celeb spotting? 
https://www.celebmashup.com

Reply via email to