Skip to content

Commit c8bce2e

Browse files
committed
fix(db): address vs rel_address comparison
1 parent 4ba84cc commit c8bce2e

1 file changed

Lines changed: 10 additions & 6 deletions

File tree

‎src/db/db.c‎

Lines changed: 10 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)