diff options
author | 2016-08-11 22:13:20 +1000 | |
---|---|---|
committer | 2016-08-11 22:13:20 +1000 | |
commit | c0b51e99f1602c16e71a8248746528eeefd61e07 (patch) | |
tree | b2bffa190ac544d964545568df39552eefe146f9 | |
parent | 74fc59935f8c80fd1477c7c447c3b1090a6bdf66 (diff) | |
parent | 549df5e6b0591c04a1f442586cf4f3786aafe991 (diff) |
Merge pull request #1228 from npwoods/fix_softlist_device_description
Fixed an issue that caused softlist device descriptions to be blank
-rw-r--r-- | src/emu/softlist.cpp | 3 | ||||
-rw-r--r-- | src/emu/softlist.h | 6 | ||||
-rw-r--r-- | src/emu/softlist_dev.cpp | 6 | ||||
-rw-r--r-- | src/emu/softlist_dev.h | 2 | ||||
-rw-r--r-- | src/frontend/mame/clifront.cpp | 2 |
5 files changed, 10 insertions, 9 deletions
diff --git a/src/emu/softlist.cpp b/src/emu/softlist.cpp index 8f6b12fe914..d7a8b8d86d8 100644 --- a/src/emu/softlist.cpp +++ b/src/emu/softlist.cpp @@ -166,12 +166,13 @@ bool software_info::has_multiple_parts(const char *interface) const // softlist_parser - constructor //------------------------------------------------- -softlist_parser::softlist_parser(util::core_file &file, const std::string &filename, std::list<software_info> &infolist, std::ostringstream &errors) +softlist_parser::softlist_parser(util::core_file &file, const std::string &filename, std::string &description, std::list<software_info> &infolist, std::ostringstream &errors) : m_file(file), m_filename(filename), m_infolist(infolist), m_errors(errors), m_done(false), + m_description(description), m_data_accum_expected(false), m_current_info(nullptr), m_current_part(nullptr), diff --git a/src/emu/softlist.h b/src/emu/softlist.h index cd50824b50f..6f3b69deaa7 100644 --- a/src/emu/softlist.h +++ b/src/emu/softlist.h @@ -148,7 +148,7 @@ class softlist_parser { public: // construction (== execution) - softlist_parser(util::core_file &file, const std::string &filename, std::list<software_info> &infolist, std::ostringstream &errors); + softlist_parser(util::core_file &file, const std::string &filename, std::string &description, std::list<software_info> &infolist, std::ostringstream &errors); private: enum parse_position @@ -191,12 +191,12 @@ private: // internal parsing state util::core_file & m_file; - const std::string & m_filename; + std::string m_filename; std::list<software_info> & m_infolist; std::ostringstream & m_errors; struct XML_ParserStruct * m_parser; bool m_done; - std::string m_description; + std::string & m_description; bool m_data_accum_expected; std::string m_data_accum; software_info * m_current_info; diff --git a/src/emu/softlist_dev.cpp b/src/emu/softlist_dev.cpp index 013f90c779c..ce6d96a24d2 100644 --- a/src/emu/softlist_dev.cpp +++ b/src/emu/softlist_dev.cpp @@ -229,9 +229,9 @@ void software_list_device::display_matches(const machine_config &config, const c { // different output depending on original system or compatible if (swlistdev.list_type() == SOFTWARE_LIST_ORIGINAL_SYSTEM) - osd_printf_error("* Software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description()); + osd_printf_error("* Software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description().c_str()); else - osd_printf_error("* Compatible software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description()); + osd_printf_error("* Compatible software list \"%s\" (%s) matches: \n", swlistdev.list_name().c_str(), swlistdev.description().c_str()); // print them out for (auto &match : matches) @@ -297,7 +297,7 @@ void software_list_device::parse() { // parse if no error std::ostringstream errs; - softlist_parser parser(m_file, m_description, m_infolist, errs); + softlist_parser parser(m_file, m_file.filename(), m_description, m_infolist, errs); m_file.close(); m_errors = errs.str(); } diff --git a/src/emu/softlist_dev.h b/src/emu/softlist_dev.h index bc72960105d..c144c93bc4a 100644 --- a/src/emu/softlist_dev.h +++ b/src/emu/softlist_dev.h @@ -145,7 +145,7 @@ public: const char *filename() { return m_file.filename(); } // getters that may trigger a parse - const char *description() { if (!m_parsed) parse(); return m_description.c_str(); } + const std::string &description() { if (!m_parsed) parse(); return m_description; } bool valid() { if (!m_parsed) parse(); return !m_infolist.empty(); } const char *errors_string() { if (!m_parsed) parse(); return m_errors.c_str(); } const std::list<software_info> &get_info() { if (!m_parsed) parse(); return m_infolist; } diff --git a/src/frontend/mame/clifront.cpp b/src/frontend/mame/clifront.cpp index bc98768242a..a274326fac2 100644 --- a/src/frontend/mame/clifront.cpp +++ b/src/frontend/mame/clifront.cpp @@ -1387,7 +1387,7 @@ void cli_frontend::verifysamples(const char *gamename) void cli_frontend::output_single_softlist(FILE *out, software_list_device &swlistdev) { - fprintf(out, "\t<softwarelist name=\"%s\" description=\"%s\">\n", swlistdev.list_name().c_str(), xml_normalize_string(swlistdev.description())); + fprintf(out, "\t<softwarelist name=\"%s\" description=\"%s\">\n", swlistdev.list_name().c_str(), xml_normalize_string(swlistdev.description().c_str())); for (const software_info &swinfo : swlistdev.get_info()) { fprintf(out, "\t\t<software name=\"%s\"", swinfo.shortname().c_str()); |