summaryrefslogtreecommitdiffstatshomepage
diff options
context:
space:
mode:
author Vas Crabb <vas@vastheman.com>2019-09-08 22:13:02 +1000
committer Vas Crabb <vas@vastheman.com>2019-09-08 22:13:02 +1000
commitfde41f3faddc576c28363dddfe8971cba3b6a5cc (patch)
treef1ebe93819ec40348148375b77d0441ba4ff3451
parent68d38ecac6c351f24269bf6d2287e961cc5b33a6 (diff)
render.cpp: print a warning and continue on encountering malformed XML in a layout file (nw)
-rw-r--r--src/emu/render.cpp22
-rw-r--r--src/lib/util/xmlfile.h16
2 files changed, 31 insertions, 7 deletions
diff --git a/src/emu/render.cpp b/src/emu/render.cpp
index e896c3748f1..415906b3809 100644
--- a/src/emu/render.cpp
+++ b/src/emu/render.cpp
@@ -2057,7 +2057,27 @@ bool render_target::load_layout_file(const char *dirname, const char *filename)
return false;
// read the file
- util::xml::file::ptr rootnode(util::xml::file::read(layoutfile, nullptr));
+ util::xml::parse_options parseopt;
+ util::xml::parse_error parseerr;
+ parseopt.error = &parseerr;
+ util::xml::file::ptr rootnode(util::xml::file::read(layoutfile, &parseopt));
+ if (!rootnode)
+ {
+ if (parseerr.error_message)
+ {
+ osd_printf_warning(
+ "Error parsing XML file '%s' at line %d column %d: %s, ignoring\n",
+ filename,
+ parseerr.error_line,
+ parseerr.error_column,
+ parseerr.error_message);
+ }
+ else
+ {
+ osd_printf_warning("Error parsing XML file '%s', ignorning\n", filename);
+ }
+ return false;
+ }
// if we didn't get a properly-formatted XML file, record a warning and exit
if (!load_layout_file(m_manager.machine().root_device(), dirname, *rootnode))
diff --git a/src/lib/util/xmlfile.h b/src/lib/util/xmlfile.h
index 5e55dbf310e..8d09b2b7e1e 100644
--- a/src/lib/util/xmlfile.h
+++ b/src/lib/util/xmlfile.h
@@ -45,18 +45,22 @@ enum
/* extended error information from parsing */
struct parse_error
{
- const char * error_message;
- int error_line;
- int error_column;
+ parse_error() = default;
+
+ const char * error_message = nullptr;
+ int error_line = 0;
+ int error_column = 0;
};
// parsing options
struct parse_options
{
- parse_error * error;
- void (*init_parser)(XML_ParserStruct *parser);
- uint32_t flags;
+ parse_options() = default;
+
+ parse_error * error = nullptr;
+ void (*init_parser)(XML_ParserStruct *parser) = nullptr;
+ uint32_t flags = 0;
};