summaryrefslogtreecommitdiff
path: root/valexpr.cc
diff options
context:
space:
mode:
Diffstat (limited to 'valexpr.cc')
-rw-r--r--valexpr.cc16
1 files changed, 11 insertions, 5 deletions
diff --git a/valexpr.cc b/valexpr.cc
index ce1f1cb8..85024ddf 100644
--- a/valexpr.cc
+++ b/valexpr.cc
@@ -582,8 +582,12 @@ void value_expr_t::compute(value_t& result, const details_t& details,
}
case O_COM:
- assert(left);
- assert(right);
+ if (! left)
+ throw new compute_error("Comma operator missing left operand",
+ new valexpr_context(this));
+ if (! right)
+ throw new compute_error("Comma operator missing right operand",
+ new valexpr_context(this));
left->compute(result, details, context);
right->compute(result, details, context);
break;
@@ -1039,8 +1043,8 @@ value_expr_t * parse_value_term(std::istream& in, scope_t * scope,
unexpected(c, ']');
in.get(c);
- node.reset(new value_expr_t(value_expr_t::CONSTANT));
interval_t timespan(buf);
+ node.reset(new value_expr_t(value_expr_t::CONSTANT));
node->value = new value_t(timespan.first());
break;
}
@@ -1734,10 +1738,12 @@ bool print_value_expr(std::ostream& out,
break;
case value_expr_t::O_COM:
- if (print_value_expr(out, node->left, relaxed, node_to_find, start_pos, end_pos))
+ if (node->left &&
+ print_value_expr(out, node->left, relaxed, node_to_find, start_pos, end_pos))
found = true;
out << ", ";
- if (print_value_expr(out, node->right, relaxed, node_to_find, start_pos, end_pos))
+ if (node->right &&
+ print_value_expr(out, node->right, relaxed, node_to_find, start_pos, end_pos))
found = true;
break;
case value_expr_t::O_QUES: