fix one more problematic omitted conditional case
authorMatthias Braun <matze@braunis.de>
Tue, 25 Nov 2008 13:27:40 +0000 (13:27 +0000)
committerMatthias Braun <matze@braunis.de>
Tue, 25 Nov 2008 13:27:40 +0000 (13:27 +0000)
[r23984]

parser.c

index 506fea0..b214fc1 100644 (file)
--- 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);