From: Matthias Braun Date: Tue, 25 Nov 2008 13:27:40 +0000 (+0000) Subject: fix one more problematic omitted conditional case X-Git-Url: http://nsz.repo.hu/git/?a=commitdiff_plain;h=476ee2175bb415aa90f98a5c2f12390097dcdff2;p=cparser fix one more problematic omitted conditional case [r23984] --- diff --git a/parser.c b/parser.c index 506fea0..b214fc1 100644 --- a/parser.c +++ b/parser.c @@ -5622,11 +5622,15 @@ static bool expression_returns(expression_t const *const expr) case EXPR_CONDITIONAL: // TODO handle constant expression - return - expression_returns(expr->conditional.condition) && ( - expression_returns(expr->conditional.true_expression) || - expression_returns(expr->conditional.false_expression) - ); + + if (!expression_returns(expr->conditional.condition)) + return false; + + if (expr->condition.true_expression != NULL + && expression_returns(expr->conditional.true_expression)) + return true; + + return expression_returns(expr->conditional.false_expression); case EXPR_SELECT: return expression_returns(expr->select.compound);