diff --git a/src/base/SMPFunction.cpp b/src/base/SMPFunction.cpp index 2c519e2e58b9df7c7e6913c5fa38ab57b178fb9d..0dcb1bb4d9ebb5d3333beeb2041099d7f49add34 100644 --- a/src/base/SMPFunction.cpp +++ b/src/base/SMPFunction.cpp @@ -3524,6 +3524,9 @@ void SMPFunction::BuildStackAccessTables(void) { bool ESPRelative = (!(UsedFramePointer || CurrInst->HasFPNormalizedToSP())); if (SignedOffset < 0) { + if (IndexedAccess && ((offset + DataSize - 1) >= this->NegativeOffsetStackFrameMap.size())) { + continue; // Indexed expressions can be within frame even when offset is outside frame + } assert((offset + DataSize - 1) < this->NegativeOffsetStackFrameMap.size()); for (int j = 0; j < (int) DataSize; ++j) { // offset has zero-based index into negative offset vectors this->NegativeOffsetStackFrameMap[offset + j].Written = true;