diff options
Diffstat (limited to 'src')
| -rw-r--r-- | src/analysis/disass/area.c | 24 | 
1 files changed, 24 insertions, 0 deletions
| diff --git a/src/analysis/disass/area.c b/src/analysis/disass/area.c index 9a5387c..b76b5ec 100644 --- a/src/analysis/disass/area.c +++ b/src/analysis/disass/area.c @@ -315,8 +315,20 @@ static bool is_range_empty_in_mem_area(mem_area *area, phys_t start, phys_t len)      assert((start + len) <= get_mrange_length(&area->range)); +    /** +     * Les accès au champ de bits sont atomiques, mais la fonction +     * mark_range_in_mem_area_as_processed() peut y accéder en deux temps +     * (réinitialisation, puis définition). +     * +     * On protège donc les accès de façon constante. +     */ + +    g_mutex_lock(&area->mutex); +      result = test_none_in_bit_field(area->processed, start, len); +    g_mutex_unlock(&area->mutex); +      return result;  } @@ -342,8 +354,20 @@ static bool is_range_busy_in_mem_area(mem_area *area, phys_t start, phys_t len)      assert((start + len) <= get_mrange_length(&area->range)); +    /** +     * Les accès au champ de bits sont atomiques, mais la fonction +     * mark_range_in_mem_area_as_processed() peut y accéder en deux temps +     * (réinitialisation, puis définition). +     * +     * On protège donc les accès de façon constante. +     */ + +    g_mutex_lock(&area->mutex); +      result = test_all_in_bit_field(area->processed, start, len); +    g_mutex_unlock(&area->mutex); +      return result;  } | 
