diff --git a/src/mergesort.c b/src/mergesort.c index 02094b486aeb..4d5bdbd414db 100644 --- a/src/mergesort.c +++ b/src/mergesort.c @@ -44,7 +44,15 @@ static int expr_msort_cmp(const struct expr *e1, const struct expr *e2) case EXPR_MAPPING: return expr_msort_cmp(e1->left, e2->left); case EXPR_BINOP: - return expr_msort_cmp(e1->left, e2->left); + switch (e2->etype) { + case EXPR_VALUE: + return expr_msort_cmp(e1->left, e2); + case EXPR_BINOP: + return expr_msort_cmp(e1->left, e2->left); + default: + break; + } + /* fall through */ default: BUG("Unknown expression %s\n", expr_name(e1)); }