diff --git a/librz/core/cmd/cmd.c b/librz/core/cmd/cmd.c index aba6953504..98467d871d 100644 --- a/librz/core/cmd/cmd.c +++ b/librz/core/cmd/cmd.c @@ -3404,6 +3404,8 @@ DEFINE_HANDLE_TS_FCN_AND_SYMBOL(redirect_stmt) { } else { rz_cons_flush(); RZ_LOG_DEBUG("redirect_stmt: fdn = %d, is_append = %d\n", fdn, is_append); + rz_cons_push(); + rz_cons_set_flush(true); RzConsPipe *cpipe = rz_cons_pipe_open(arg_str, fdn, is_append); if (cpipe) { if (!pipecolor) { @@ -3416,6 +3418,7 @@ DEFINE_HANDLE_TS_FCN_AND_SYMBOL(redirect_stmt) { } else { RZ_LOG_WARN("Could not open pipe to %d\n", fdn); } + rz_cons_pop(); } free(arg_str); fail: diff --git a/test/db/cmd/feat_redirect b/test/db/cmd/feat_redirect index a287d830e0..ddbf7e15d3 100644 --- a/test/db/cmd/feat_redirect +++ b/test/db/cmd/feat_redirect @@ -37,3 +37,25 @@ Hello World EOF RUN + +NAME=stacked redirect +FILE== +CMDS=<.rz-stacked-redirect.txt; echo b) +# outer redirect to alias, any other feature which redirects output to buffer like the builtin grep ~ would also work +.(mac1) > $al1 +echo "---" +cat .rz-stacked-redirect.txt +echo "---" +$** +rm .rz-stacked-redirect.txt +EOF +EXPECT=<