From 6a345535ee7d2985830e58210a5aa609fe94c5bd Mon Sep 17 00:00:00 2001 From: beeanyew Date: Thu, 3 Jun 2021 11:14:49 +0200 Subject: [PATCH] Only allow get_mapped functions to return RAM and ROM ranges --- config_file/config_file.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/config_file/config_file.c b/config_file/config_file.c index 526efd6..d60b9b7 100644 --- a/config_file/config_file.c +++ b/config_file/config_file.c @@ -538,8 +538,10 @@ int get_mapped_item_by_address(struct emulator_config *cfg, uint32_t address) { for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) { if (cfg->map_type[i] == MAPTYPE_NONE || !cfg->map_data[i]) continue; - if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) - return i; + else if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { + if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC || cfg->map_type[i] == MAPTYPE_ROM) + return i; + } } return -1; @@ -549,12 +551,9 @@ uint8_t *get_mapped_data_pointer_by_address(struct emulator_config *cfg, uint32_ for (int i = 0; i < MAX_NUM_MAPPED_ITEMS; i++) { if (cfg->map_type[i] == MAPTYPE_NONE || !cfg->map_data[i]) continue; - if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { - if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC) { + else if (address >= cfg->map_offset[i] && address < cfg->map_high[i]) { + if (cfg->map_type[i] == MAPTYPE_RAM || cfg->map_type[i] == MAPTYPE_RAM_NOALLOC || cfg->map_type[i] == MAPTYPE_ROM) return cfg->map_data[i] + (address - cfg->map_offset[i]); - } else { - return NULL; - } } } -- 2.39.2