From bd09f4dbc09fb3fced5517612a8eb7731ae6fa5f Mon Sep 17 00:00:00 2001 From: Couriersud Date: Mon, 24 Feb 2014 23:47:40 +0000 Subject: [PATCH] Fixed a netlist crash on clang due to ATTR_NORETURN. Also fixed some debug statements. [Couriersud] --- src/emu/machine/netlist.c | 2 +- src/emu/machine/netlist.h | 2 +- src/emu/netlist/devices/nld_74ls629.c | 5 ++--- src/emu/netlist/nl_base.c | 14 +++++++------- src/emu/netlist/nl_base.h | 2 +- src/emu/netlist/nl_lists.h | 1 + src/emu/netlist/nl_parser.c | 4 ++-- src/emu/netlist/nl_setup.c | 10 ++++++---- src/tools/nltool.c | 2 +- 9 files changed, 22 insertions(+), 20 deletions(-) diff --git a/src/emu/machine/netlist.c b/src/emu/machine/netlist.c index 4713b0dc512..0fa20b57c06 100644 --- a/src/emu/machine/netlist.c +++ b/src/emu/machine/netlist.c @@ -261,7 +261,7 @@ void netlist_mame_stream_output_t::custom_netlist_additions(netlist_setup_t &set // netlist_mame_t // ---------------------------------------------------------------------------------------- -void netlist_mame_t::vfatalerror(const loglevel_e level, const char *format, va_list ap) const +void netlist_mame_t::verror(const loglevel_e level, const char *format, va_list ap) const { pstring errstr = pstring(format).vprintf(ap); diff --git a/src/emu/machine/netlist.h b/src/emu/machine/netlist.h index 5a77e7c54b0..9bd77f3ca87 100644 --- a/src/emu/machine/netlist.h +++ b/src/emu/machine/netlist.h @@ -142,7 +142,7 @@ public: protected: - void vfatalerror(const loglevel_e level, const char *format, va_list ap) const; + void verror(const loglevel_e level, const char *format, va_list ap) const; private: netlist_mame_device_t &m_parent; diff --git a/src/emu/netlist/devices/nld_74ls629.c b/src/emu/netlist/devices/nld_74ls629.c index 084fcd1ff01..09c12d2d98c 100644 --- a/src/emu/netlist/devices/nld_74ls629.c +++ b/src/emu/netlist/devices/nld_74ls629.c @@ -77,9 +77,6 @@ NETLIB_START(SN74LS629) register_sub(m_R_FC, "R_FC"); register_sub(m_R_RNG, "R_RNG"); - m_R_FC.set_R(90000.0); - m_R_RNG.set_R(90000.0); - register_input("ENQ", m_ENQ); register_input("RNG", m_RNG); register_input("FC", m_FC); @@ -95,6 +92,8 @@ NETLIB_START(SN74LS629) NETLIB_RESET(SN74LS629) { + m_R_FC.set_R(90000.0); + m_R_RNG.set_R(90000.0); m_clock.reset(); } diff --git a/src/emu/netlist/nl_base.c b/src/emu/netlist/nl_base.c index ad7f9308864..d4828773eec 100644 --- a/src/emu/netlist/nl_base.c +++ b/src/emu/netlist/nl_base.c @@ -43,7 +43,7 @@ void netlist_queue_t::on_pre_save() { NL_VERBOSE_OUT(("on_pre_save\n")); m_qsize = this->count(); - NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist->time().as_double(), qsize)); + NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist.time().as_double(), m_qsize)); for (int i = 0; i < m_qsize; i++ ) { m_times[i] = this->listptr()[i].time().as_raw(); @@ -58,12 +58,12 @@ void netlist_queue_t::on_pre_save() void netlist_queue_t::on_post_load() { this->clear(); - NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist->time().as_double(), qsize)); + NL_VERBOSE_OUT(("current time %f qsize %d\n", m_netlist.time().as_double(), m_qsize)); for (int i = 0; i < m_qsize; i++ ) { netlist_net_t *n = m_netlist.find_net(&(m_name[i][0])); - NL_VERBOSE_OUT(("Got %s ==> %p\n", qtemp[i].m_name, n)); - NL_VERBOSE_OUT(("schedule time %f (%f)\n", n->time().as_double(), qtemp[i].m_time.as_double())); + //NL_VERBOSE_OUT(("Got %s ==> %p\n", qtemp[i].m_name, n)); + //NL_VERBOSE_OUT(("schedule time %f (%f)\n", n->time().as_double(), qtemp[i].m_time.as_double())); this->push(netlist_queue_t::entry_t(netlist_time::from_raw(m_times[i]), n)); } } @@ -311,7 +311,7 @@ ATTR_COLD void netlist_base_t::error(const char *format, ...) const { va_list ap; va_start(ap, format); - vfatalerror(NL_ERROR, format, ap); + verror(NL_ERROR, format, ap); va_end(ap); } @@ -319,7 +319,7 @@ ATTR_COLD void netlist_base_t::warning(const char *format, ...) const { va_list ap; va_start(ap, format); - vfatalerror(NL_WARNING, format, ap); + verror(NL_WARNING, format, ap); va_end(ap); } @@ -327,7 +327,7 @@ ATTR_COLD void netlist_base_t::log(const char *format, ...) const { va_list ap; va_start(ap, format); - vfatalerror(NL_LOG, format, ap); + verror(NL_LOG, format, ap); va_end(ap); } diff --git a/src/emu/netlist/nl_base.h b/src/emu/netlist/nl_base.h index c98b2cfe94e..8cccf19fde6 100644 --- a/src/emu/netlist/nl_base.h +++ b/src/emu/netlist/nl_base.h @@ -1118,7 +1118,7 @@ protected: }; // any derived netlist must override this ... - ATTR_COLD ATTR_NORETURN virtual void vfatalerror(const loglevel_e level, + ATTR_COLD virtual void verror(const loglevel_e level, const char *format, va_list ap) const = 0; /* from netlist_object */ diff --git a/src/emu/netlist/nl_lists.h b/src/emu/netlist/nl_lists.h index 53ef0978ad1..256f9f340b8 100644 --- a/src/emu/netlist/nl_lists.h +++ b/src/emu/netlist/nl_lists.h @@ -40,6 +40,7 @@ public: ATTR_COLD netlist_list_t &operator=(const netlist_list_t &rhs) { + this->reset(); for (int i=0; iadd(rhs[i]); diff --git a/src/emu/netlist/nl_parser.c b/src/emu/netlist/nl_parser.c index 43f6d6c179d..8c6ad228fbd 100644 --- a/src/emu/netlist/nl_parser.c +++ b/src/emu/netlist/nl_parser.c @@ -293,7 +293,7 @@ void netlist_parser::parse_netlist(const pstring &nlname) return; require_token(m_tok_param_left); - NL_VERBOSE_OUT(("Parser: Device: %s\n", n.cstr())); + NL_VERBOSE_OUT(("Parser: Device: %s\n", token.str().cstr())); if (token.is(m_tok_ALIAS)) net_alias(); @@ -425,7 +425,7 @@ void netlist_parser::device(const pstring &dev_type) { pstring paramfq = devname + "." + def_params[cnt]; - NL_VERBOSE_OUT(("Defparam: %s\n", def_param.cstr())); + NL_VERBOSE_OUT(("Defparam: %s\n", paramfq.cstr())); require_token(m_tok_comma); tok = get_token(); if (tok.is_type(STRING)) diff --git a/src/emu/netlist/nl_setup.c b/src/emu/netlist/nl_setup.c index 206e0687fda..5e3c6f7df41 100644 --- a/src/emu/netlist/nl_setup.c +++ b/src/emu/netlist/nl_setup.c @@ -208,7 +208,7 @@ void netlist_setup_t::register_object(netlist_device_t &dev, const pstring &name { case netlist_param_t::DOUBLE: { - NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", temp.cstr(), val->cstr())); + NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val.cstr())); double vald = 0; if (sscanf(val.cstr(), "%lf", &vald) != 1) netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr()); @@ -218,7 +218,7 @@ void netlist_setup_t::register_object(netlist_device_t &dev, const pstring &name case netlist_param_t::INTEGER: case netlist_param_t::LOGIC: { - NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val->cstr())); + NL_VERBOSE_OUT(("Found parameter ... %s : %s\n", name.cstr(), val.cstr())); double vald = 0; if (sscanf(val.cstr(), "%lf", &vald) != 1) netlist().error("Invalid number conversion %s : %s\n", name.cstr(), val.cstr()); @@ -533,7 +533,7 @@ static netlist_core_terminal_t &resolve_proxy(netlist_core_terminal_t &term) void netlist_setup_t::connect(netlist_core_terminal_t &t1_in, netlist_core_terminal_t &t2_in) { - NL_VERBOSE_OUT(("Connecting %s to %s\n", t1.name().cstr(), t2.name().cstr())); + NL_VERBOSE_OUT(("Connecting %s to %s\n", t1_in.name().cstr(), t2_in.name().cstr())); netlist_core_terminal_t &t1 = resolve_proxy(t1_in); netlist_core_terminal_t &t2 = resolve_proxy(t2_in); @@ -577,7 +577,8 @@ void netlist_setup_t::resolve_inputs() { bool has_twoterms = false; - netlist().log("Resolving inputs ..."); + netlist().log("Resolving inputs ..."); + for (const link_t *entry = m_links.first(); entry != NULL; entry = m_links.next(entry)) { const pstring t1s = entry->e1; @@ -588,6 +589,7 @@ void netlist_setup_t::resolve_inputs() connect(*t1, *t2); } + //netlist().log("printing outputs ..."); /* print all outputs */ for (tagmap_terminal_t::entry_t *entry = m_terminals.first(); entry != NULL; entry = m_terminals.next(entry)) { diff --git a/src/tools/nltool.c b/src/tools/nltool.c index c304d2b1138..b25e31a2684 100644 --- a/src/tools/nltool.c +++ b/src/tools/nltool.c @@ -156,7 +156,7 @@ public: pstring m_logs; protected: - void vfatalerror(const loglevel_e level, const char *format, va_list ap) const + void verror(const loglevel_e level, const char *format, va_list ap) const { switch (level) {