diff --git a/src/d3d9/d3d9_shader_validator.cpp b/src/d3d9/d3d9_shader_validator.cpp index a4f983e53..13d7e3434 100644 --- a/src/d3d9/d3d9_shader_validator.cpp +++ b/src/d3d9/d3d9_shader_validator.cpp @@ -87,7 +87,7 @@ namespace dxvk { default: // Iterate over register tokens. Bit 31 of register tokens is always 1. - for (uint32_t instNum = 1; pdwInst[instNum] & 0x80000000; instNum++) { + for (uint32_t instNum = 1; instNum < cdw && (pdwInst[instNum] >> 31); instNum++) { DWORD regType = ((pdwInst[instNum] & D3DSP_REGTYPE_MASK) >> D3DSP_REGTYPE_SHIFT) | ((pdwInst[instNum] & D3DSP_REGTYPE_MASK2) >> D3DSP_REGTYPE_SHIFT2); DWORD regIndex = pdwInst[instNum] & D3DSP_REGNUM_MASK;