From 3c05822011bf351d3c4e2b5d847d0353387bab67 Mon Sep 17 00:00:00 2001 From: ptitSeb Date: Sat, 4 Mar 2023 11:51:28 +0100 Subject: [DYNAREC] Fixed a nasty bug with the finetunning of the jump table memory allocation --- src/custommem.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/src/custommem.c b/src/custommem.c index f0936b73..6cb011c1 100644 --- a/src/custommem.c +++ b/src/custommem.c @@ -575,27 +575,27 @@ void FreeDynarecMap(uintptr_t addr) static uintptr_t getDBSize(uintptr_t addr, size_t maxsize, dynablock_t** db) { - const uintptr_t idx3 = (addr>>48)&0xffff; - const uintptr_t idx2 = (addr>>32)&0xffff; - const uintptr_t idx1 = (addr>>16)&0xffff; - uintptr_t idx0 = addr&0xffff; + const uintptr_t idx3 = (addr>>JMPTABL_START3)&JMPTABLE_MASK3; + const uintptr_t idx2 = (addr>>JMPTABL_START2)&JMPTABLE_MASK2; + const uintptr_t idx1 = (addr>>JMPTABL_START1)&JMPTABLE_MASK1; + uintptr_t idx0 = addr&JMPTABLE_MASK0; *db = *(dynablock_t**)(box64_jmptbl3[idx3][idx2][idx1][idx0]- sizeof(void*)); if(*db) return 1; if(box64_jmptbl3[idx3] == box64_jmptbldefault2) - return (addr|0xffffffffffffLL)+1-addr; + return (addr|((1LL<0x10000) - maxsize = 0x10000; + return (addr|JMPTABLE_MASK0)+1-addr; + if (maxsize>JMPTABLE_MASK0+1) + maxsize = JMPTABLE_MASK0+1; while(idx0