From 33044876ddec0d7988f3b177f66dca6440b7dbc4 Mon Sep 17 00:00:00 2001 From: Stephen Williams Date: Fri, 19 Dec 2008 16:32:44 -0800 Subject: [PATCH] Handle errors in parameter handling. Don't crash if the user typed in an invalid parameter. --- design_dump.cc | 6 +++++- net_design.cc | 6 +++++- 2 files changed, 10 insertions(+), 2 deletions(-) diff --git a/design_dump.cc b/design_dump.cc index edd8b65d9..c4065ec60 100644 --- a/design_dump.cc +++ b/design_dump.cc @@ -1118,7 +1118,11 @@ void NetScope::dump(ostream&o) const o << "[" << *(*pp).second.msb << ":" << *(*pp).second.lsb << "] "; - o << (*pp).first << " = " << *(*pp).second.expr; + o << (*pp).first << " = "; + if (pp->second.expr) + o << *(*pp).second.expr; + else + o << ""; for (range_t*ran = (*pp).second.range ; ran ; ran = ran->next) { if (ran->exclude_flag) diff --git a/net_design.cc b/net_design.cc index dc7723499..7f3ad88f1 100644 --- a/net_design.cc +++ b/net_design.cc @@ -590,7 +590,11 @@ void NetScope::evaluate_parameters(Design*des) for (param_ref_t cur = parameters.begin() ; cur != parameters.end() ; cur ++) { - cur->second.expr->resolve_pexpr_type(); + // Resolve the expression type (signed/unsigned) if the + // expression is present. It is possible to not be + // present if there are earlier errors en elaboration. + if (cur->second.expr) + cur->second.expr->resolve_pexpr_type(); switch ((*cur).second.type) { case IVL_VT_BOOL: