Here's an update to what I've discovered - hopefully someone can give me a hint
on some
questions I have.
First, I've added some output statements in easyxml.cxx, in this version of the
readXML()
function:
-------------------
------ start ------
-------------------
void
readXML (istream &input, XMLVisitor &visitor, const string &path)
{
XML_Parser parser = XML_ParserCreate(0);
XML_SetUserData(parser, &visitor);
XML_SetElementHandler(parser, start_element, end_element);
XML_SetCharacterDataHandler(parser, character_data);
XML_SetProcessingInstructionHandler(parser, processing_instruction);
visitor.startXML();
char buf[16384];
while (!input.eof()) {
cout << "A-1" << endl;
if (!input.good()) {
cout << "A-2" << endl;
XML_ParserFree(parser);
cout << "A-3" << endl;
throw sg_io_exception("Problem reading file",
sg_location(path,
XML_GetCurrentLineNumber(parser),
XML_GetCurrentColumnNumber(parser)),
"SimGear XML Parser");
cout << "A-4" << endl;
}
-------------------
------ end ------
-------------------
The above code fails when called from the JSBSim Load() function on FGPropulsion
(simplified):
-------------------
------ start ------
-------------------
Element* engine_element = el->FindElement("engine");
while (engine_element) {
engine_filename = engine_element->GetAttributeValue("file");
...
engine_file_parser = new FGXMLParse();
engine_filename = FindEngineFullPathname(engine_filename);
readXML(engine_filename, *engine_file_parser);
...
Element* engine_element = el->FindNextElement("engine");
}
-------------------
------ end ------
-------------------
When I run FlightGear I get this:
A-1
A-2
A-3
FlightGear aborting
And that's all I get. I'm wondering why I don't get a message from the thrown
simgear
exception? Why would input.good() return false?
Let me restate that this all works fine in JSBSim standalone.
Jon
_______________________________________________
Flightgear-devel mailing list
[email protected]
http://mail.flightgear.org/mailman/listinfo/flightgear-devel
2f585eeea02e2c79d7b1d8c4963bae2d