diff --git a/src/debug/debug.cpp b/src/debug/debug.cpp index a73d86c4..992ed4a4 100644 --- a/src/debug/debug.cpp +++ b/src/debug/debug.cpp @@ -1725,7 +1725,10 @@ Bit32u DEBUG_CheckKeys(void) { } if (ret<0) return ret; if (ret>0) { - ret=(*CallBack_Handlers[ret])(); + if (GCC_UNLIKELY(ret >= CB_MAX)) + ret = 0; + else + ret = (*CallBack_Handlers[ret])(); if (ret) { exitLoop=true; CPU_Cycles=CPU_CycleLeft=0; diff --git a/src/dosbox.cpp b/src/dosbox.cpp index 34e848fd..d95de3f8 100644 --- a/src/dosbox.cpp +++ b/src/dosbox.cpp @@ -128,10 +128,11 @@ static Bitu Normal_Loop(void) { Bits ret; while (1) { if (PIC_RunQueue()) { - ret=(*cpudecoder)(); + ret = (*cpudecoder)(); if (GCC_UNLIKELY(ret<0)) return 1; if (ret>0) { - Bitu blah=(*CallBack_Handlers[ret])(); + if (GCC_UNLIKELY(ret >= CB_MAX)) return 0; + Bitu blah = (*CallBack_Handlers[ret])(); if (GCC_UNLIKELY(blah)) return blah; } #if C_DEBUG