@@ -525,18 +525,20 @@ bool rd_i_db_set_sregval(RDContext* ctx, RDAddress address, const char* regname,
525525 RDSegmentRegVect * rv = _rd_i_db_segmentregs_get_vect (
526526 & ctx -> db -> segment_regs , & ctx -> db -> segment_reg_names , interned );
527527
528+ RDRelAddress rel_address = rd_i_rel (ctx , address );
529+
528530 RDSegmentReg entry = {
529- .address = rd_i_rel ( ctx , address ) ,
531+ .address = rel_address ,
530532 .name = interned ,
531533 .value = val ,
532534 .has_value = true,
533535 .confidence = c ,
534536 };
535537
536- RDSegmentReg key = {.address = rd_i_rel ( ctx , address ) };
538+ RDSegmentReg key = {.address = rel_address };
537539 usize idx = vect_lower_bound (rv , & key , _rd_i_db_segmentreg_cmp );
538540
539- if (idx < vect_length (rv ) && vect_at (rv , idx )-> address == address ) {
541+ if (idx < vect_length (rv ) && vect_at (rv , idx )-> address == rel_address ) {
540542 if (c < vect_at (rv , idx )-> confidence ) return false;
541543 * vect_at (rv , idx ) = entry ;
542544 return true;
@@ -553,18 +555,20 @@ bool rd_i_db_del_sregval(RDContext* ctx, RDAddress address, const char* regname,
553555 _rd_i_db_segmentregs_find_vect (& ctx -> db -> segment_regs , interned );
554556 if (!rv ) return false;
555557
558+ RDRelAddress rel_address = rd_i_rel (ctx , address );
559+
556560 RDSegmentReg entry = {
557- .address = rd_i_rel ( ctx , address ) ,
561+ .address = rel_address ,
558562 .name = interned ,
559563 .value = 0 ,
560564 .has_value = false,
561565 .confidence = c ,
562566 };
563567
564- RDSegmentReg key = {.address = rd_i_rel ( ctx , address ) };
568+ RDSegmentReg key = {.address = rel_address };
565569 usize idx = vect_lower_bound (rv , & key , _rd_i_db_segmentreg_cmp );
566570
567- if (idx < vect_length (rv ) && vect_at (rv , idx )-> address == address ) {
571+ if (idx < vect_length (rv ) && vect_at (rv , idx )-> address == rel_address ) {
568572 if (c < vect_at (rv , idx )-> confidence ) return false;
569573 * vect_at (rv , idx ) = entry ;
570574 return true;
0 commit comments