Hello everyone,
The application I'm working on (it's a game, actually) uses XML for some of its configuration. Since I'm using CEGUI for the GUI, and it has its own XML parsing objects, I converted my code to use that instead of my own hand-rolled parser class. If the document is missing attributes on certain tags, it throws an exception, which is what I want. However, the exception does not propagate through the C calls on the stack; instead, terminate() is called.
For those of you unfamiliar with CEGUI, it uses a plugin-based system for XML parsing. There are currently plugins for tinyxml, expat, libxml, and xerces. No particular plugin is guaranteed to be present in a specific binary distribution of CEGUI; the only requirement is that at least one is available. So my problem cannot be solved by requiring the use of a C++ parser (tinyxml or xerces).
Does anyone know of a good way to get around this problem that doesn't require me to distribute the source for CEGUI and its XML parser plugin dependencies with my game source?
I should also note that this problem only occurs on OS X; it works fine on GNU/Linux.
Here's some simple example code that demonstrates the issue:
EDIT: Minor code correction http://pastebin.com/m23ba5577
Thanks, Rob