@@ -422,6 +422,23 @@ static char *getstring(char *b, int l, bool use_color) {
422
422
return res ;
423
423
}
424
424
425
+ static RZ_OWN char * get_colored_context (RZ_NONNULL const char * ctx ) {
426
+ RzBuffer * buf = rz_buf_new_with_bytes (NULL , 0 );
427
+ if (!buf ) {
428
+ return NULL ;
429
+ }
430
+ for (; * ctx ; ctx ++ ) {
431
+ if (* ctx == '\xff' ) {
432
+ rz_buf_append_string (buf , Color_BLUE "." Color_RESET );
433
+ } else {
434
+ rz_buf_append_bytes (buf , (const ut8 * )ctx , 1 );
435
+ }
436
+ }
437
+ char * ctx_color = rz_buf_to_string (buf );
438
+ rz_buf_free (buf );
439
+ return ctx_color ;
440
+ }
441
+
425
442
static int _cb_hit (RzSearchKeyword * kw , void * user , ut64 addr ) {
426
443
struct search_parameters * param = user ;
427
444
RzCore * core = param -> core ;
@@ -460,31 +477,12 @@ static int _cb_hit(RzSearchKeyword *kw, void *user, ut64 addr) {
460
477
} else {
461
478
wrd = rz_str_utf16_encode (buf + prectx , len );
462
479
if (use_color ) {
463
- char * ptr ;
464
- RzBuffer * pre_color = rz_buf_new_with_bytes (NULL , 0 );
465
- for (ptr = pre ; * ptr ; ptr ++ ) {
466
- if (* ptr == '\xff' ) {
467
- rz_buf_append_string (pre_color , Color_BLUE "." Color_RESET );
468
- } else {
469
- rz_buf_append_bytes (pre_color , (const ut8 * )ptr , 1 );
470
- }
471
- }
472
- RzBuffer * pos_color = rz_buf_new_with_bytes (NULL , 0 );
473
- for (ptr = pos ; * ptr ; ptr ++ ) {
474
- if (* ptr == '\xff' ) {
475
- rz_buf_append_string (pos_color , Color_BLUE "." Color_RESET );
476
- } else {
477
- rz_buf_append_bytes (pos_color , (const ut8 * )ptr , 1 );
478
- }
479
- }
480
- char * pre_color_str = rz_buf_to_string (pre_color );
481
- char * pos_color_str = rz_buf_to_string (pos_color );
480
+ char * pre_color = get_colored_context (pre );
481
+ char * pos_color = get_colored_context (pos );
482
482
s = rz_str_newf ("\"%s" Color_YELLOW "%s" Color_RESET "%s\"" ,
483
- pre_color_str , wrd , pos_color_str );
484
- free (pre_color_str );
485
- free (pos_color_str );
486
- rz_buf_free (pre_color );
487
- rz_buf_free (pos_color );
483
+ pre_color , wrd , pos_color );
484
+ free (pre_color );
485
+ free (pos_color );
488
486
} else {
489
487
s = rz_str_newf ("\"%s%s%s\"" , pre , wrd , pos );
490
488
}
0 commit comments