node->u.call.own_rhs) < 0)
return -1;
retp->u.call.rhs = nrhs;
- /* Fall through. */
- case EXPR_OP_UP:
- case EXPR_OP_CALL1:
if (expr_alloc_and_clone(&nlhs, node->lhs, node->own_lhs) < 0) {
- if (node->kind == EXPR_OP_CALL2
- && node->u.call.own_rhs) {
+ if (node->u.call.own_rhs) {
expr_destroy(nrhs);
free(nrhs);
- return -1;
}
+ return -1;
}
retp->lhs = nlhs;
return 0;
+
+ case EXPR_OP_UP:
+ case EXPR_OP_CALL1:
+ if (expr_alloc_and_clone(&nlhs, node->lhs, node->own_lhs) < 0)
+ return -1;
+
+ retp->lhs = nlhs;
+ return 0;
}
assert(!"Invalid value of node kind");