From c4d3d734b1a625ab5142a3f43ff955945a783faa Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sun, 17 Nov 2024 11:00:28 +0100 Subject: [DYNAREC] Mark existing block as dirty when re-creating a memory block --- src/custommem.c | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) (limited to 'src') diff --git a/src/custommem.c b/src/custommem.c index 3307335e..dc7280e9 100644 --- a/src/custommem.c +++ b/src/custommem.c @@ -1008,7 +1008,15 @@ static uintptr_t getDBSize(uintptr_t addr, size_t maxsize, dynablock_t** db) void addDBFromAddressRange(uintptr_t addr, size_t size) { dynarec_log(LOG_DEBUG, "addDBFromAddressRange %p -> %p\n", (void*)addr, (void*)(addr+size-1)); - // do nothing, dynablock are allowed based on memory protection flags + // mark existing blocks as unclean, to be sure... + uintptr_t start_addr = my_context?((addrmax_db_size)?0:(addr-my_context->max_db_size)):addr; + dynablock_t* db = NULL; + uintptr_t end = addr+size; + while (start_addr %d\n", (void*)cur, (void*)(bend-1), prot&~PROT_WRITE, ret); } else if(dyn && !(prot&PROT_WRITE)) { dyn = PROT_DYNAREC_R; } -- cgit 1.4.1