From 8abb4ca4d3fdb0c1c9b7f02082a844e24a54e806 Mon Sep 17 00:00:00 2001 From: Khairul Azhar Kasmiran Date: Sat, 13 Jun 2026 14:30:24 +0800 Subject: [PATCH] Prevent dup flag cmt if scr.color > 0 (#6501) --- librz/core/disasm.c | 7 +++++-- test/db/cmd/cmd_pd2 | 27 +++++++++++++++------------ 2 files changed, 20 insertions(+), 14 deletions(-) diff --git a/librz/core/disasm.c b/librz/core/disasm.c index 9b18e711d4..33b4ea9c6a 100644 --- a/librz/core/disasm.c +++ b/librz/core/disasm.c @@ -231,6 +231,7 @@ typedef struct { char *refline, *refline2; char *comment; char *opstr; + char *opstr_nocolor; char *osl, *sl; int index; ut64 at, vat, addr, dest; @@ -857,6 +858,7 @@ static void ds_free(RzDisasmState *ds) { free(ds->refline2); free(ds->prev_line_col); free(ds->opstr); + free(ds->opstr_nocolor); free(ds->osl); free(ds->sl); free(ds->_tabsbuf); @@ -965,7 +967,8 @@ static void ds_opstr_try_colorize(RzDisasmState *ds, bool print_color) { return; } char *new_opstr = rz_strbuf_drain(colored_asm); - free(ds->opstr); + free(ds->opstr_nocolor); + ds->opstr_nocolor = ds->opstr; ds->opstr = new_opstr; } @@ -3621,7 +3624,7 @@ static void ds_print_fcn_name(RzDisasmState *ds) { } else if (delta < 0) { ds_begin_comment(ds); ds_comment(ds, true, "; %s-0x%" PFMT64x, f->name, (ut64)(-delta)); - } else if ((!ds->core->vmode || (!ds->subjmp && !ds->subnames)) && (!ds->opstr || !strstr(ds->opstr, f->name))) { + } else if ((!ds->core->vmode || (!ds->subjmp && !ds->subnames)) && (!ds->opstr || !strstr(ds->opstr_nocolor ? ds->opstr_nocolor : ds->opstr, f->name))) { RzFlagItem *flag_sym; if (ds->core->vmode && (flag_sym = rz_flag_get_by_spaces(ds->core->flags, ds->analysis_op.jump, RZ_FLAGS_FS_SYMBOLS, NULL)) && flag_sym->demangled) { return; diff --git a/test/db/cmd/cmd_pd2 b/test/db/cmd/cmd_pd2 index 1ab8ef20e1..ee1d839a0e 100644 --- a/test/db/cmd/cmd_pd2 +++ b/test/db/cmd/cmd_pd2 @@ -949,21 +949,24 @@ EXPECT=<