@@ -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