On allocation failure of nhls for EXPR_OP_CALL2,
EXPR_OP_UP, EXPR_OP_CALL1, the correct behaviour,
that is returning -1, was only effective if
node->kind == EXPR_OP_CALL2 and node->u.call.own_rhs
This change implements the correct behaviour.
It also solves a warning when compiling with gcc4.9 that
broke integration when compiling with -Werror: the compiler
was hurt to use nrhs that he suspected (wrongly) to be
uninitialised.
Change-Id: I184fea5e121d38fa1df5d0a8680edf51e9fff1a8
Signed-off-by: José Bollo <jose.bollo@open.eurogiciel.org>
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");