@@ -461,7 +461,10 @@ void InterpCompiler::LinkBBs(InterpBasicBlock *from, InterpBasicBlock *to)
461461 if (newCapacity > prevCapacity)
462462 {
463463 InterpBasicBlock **newa = (InterpBasicBlock**)AllocMemPool (newCapacity * sizeof (InterpBasicBlock*));
464- memcpy (newa, from->ppOutBBs , from->outCount * sizeof (InterpBasicBlock*));
464+ if (from->outCount != 0 )
465+ {
466+ memcpy (newa, from->ppOutBBs , from->outCount * sizeof (InterpBasicBlock*));
467+ }
465468 from->ppOutBBs = newa;
466469 }
467470 from->ppOutBBs [from->outCount ] = to;
@@ -483,7 +486,9 @@ void InterpCompiler::LinkBBs(InterpBasicBlock *from, InterpBasicBlock *to)
483486 int newCapacity = GetBBLinksCapacity (to->inCount + 1 );
484487 if (newCapacity > prevCapacity) {
485488 InterpBasicBlock **newa = (InterpBasicBlock**)AllocMemPool (newCapacity * sizeof (InterpBasicBlock*));
486- memcpy (newa, to->ppInBBs , to->inCount * sizeof (InterpBasicBlock*));
489+ if (to->inCount != 0 ) {
490+ memcpy (newa, to->ppInBBs , to->inCount * sizeof (InterpBasicBlock*));
491+ }
487492 to->ppInBBs = newa;
488493 }
489494 to->ppInBBs [to->inCount ] = from;
@@ -5300,7 +5305,10 @@ void InterpCompiler::GenerateCode(CORINFO_METHOD_INFO* methodInfo)
53005305 // We need to realloc the IL code buffer to hold the extra opcodes
53015306
53025307 uint8_t * newILCode = (uint8_t *)AllocMemPool (newILCodeSize);
5303- memcpy (newILCode, m_pILCode, m_ILCodeSize);
5308+ if (m_ILCodeSize != 0 )
5309+ {
5310+ memcpy (newILCode, m_pILCode, m_ILCodeSize);
5311+ }
53045312 memcpy (newILCode + m_synchronizedFinallyStartOffset, opCodesForSynchronizedMethodFinally, sizeof (opCodesForSynchronizedMethodFinally));
53055313 memcpy (newILCode + m_synchronizedPostFinallyOffset, opCodesForSynchronizedMethodEpilog, sizeof (opCodesForSynchronizedMethodEpilog));
53065314 m_pILCode = newILCode;
@@ -5512,7 +5520,10 @@ void InterpCompiler::GenerateCode(CORINFO_METHOD_INFO* methodInfo)
55125520 {
55135521 MergeStackTypeInfo (m_pStackBase, pNewBB->pStackState , pNewBB->stackHeight );
55145522 // This is relevant only for copying the vars associated with the values on the stack
5515- memcpy (m_pStackBase, pNewBB->pStackState , pNewBB->stackHeight * sizeof (StackInfo));
5523+ if (pNewBB->stackHeight != 0 )
5524+ {
5525+ memcpy (m_pStackBase, pNewBB->pStackState , pNewBB->stackHeight * sizeof (StackInfo));
5526+ }
55165527 m_pStackPointer = m_pStackBase + pNewBB->stackHeight ;
55175528 }
55185529 else
@@ -5527,7 +5538,10 @@ void InterpCompiler::GenerateCode(CORINFO_METHOD_INFO* methodInfo)
55275538 if (pNewBB->stackHeight >= 0 )
55285539 {
55295540 // This is relevant only for copying the vars associated with the values on the stack
5530- memcpy (m_pStackBase, pNewBB->pStackState , pNewBB->stackHeight * sizeof (StackInfo));
5541+ if (pNewBB->stackHeight != 0 )
5542+ {
5543+ memcpy (m_pStackBase, pNewBB->pStackState , pNewBB->stackHeight * sizeof (StackInfo));
5544+ }
55315545 m_pStackPointer = m_pStackBase + pNewBB->stackHeight ;
55325546 pNewBB->emitState = BBStateEmitting;
55335547 emittedBBlocks = true ;
0 commit comments