Hi all,
I come here with a trouble, I have a player with a low profile computer on windows 10 who crash when he see the ngc mother ship or the blue bishop.
I have look with him and a debbugger where it crash:
here the full function related to the null not check varaible:
the wrong line is this one:
as CEffectInfo have for parent EffectData his size is bigger than Effect data, so it's mean pData can not be read for sizeof(EffectData) bytes.
this trouble arrive actually only to one player, and I don't find a way to solve it (searching since yesterday)
if you have any Idea to make me on the way to solve it I will be happy to read it.
(or my be my asset file have something wrong, but I don't thing cause other player doesn't have any trouble)
I come here with a trouble, I have a player with a low profile computer on windows 10 who crash when he see the ngc mother ship or the blue bishop.
I have look with him and a debbugger where it crash:
here the full function related to the null not check varaible:
Code:
BOOL CCharacterInfo::Load(char* strName,int nMonsterTransformer /* = 0 */, float nMonsterTransScale /* = 0.0f */)
//end 2010. 03. 18 by jskim ¸ó½ºÅͺ¯½Å Ä«µå
{
FLOG( "CCharacterInfo::Load(char* strName)" );
DBGOUT_EFFECT(" Character file[this:0x%08X][name:%s]\n", this, strName );
if (!g_pD3dApp->m_pEffectRender) return FALSE;
DataHeader* pDataHeader = g_pD3dApp->m_pEffectRender->FindObjectInfo(strName);
if (!pDataHeader) return FALSE;
// {
// DBGOUT("ÀÌÆåÆ® ÆÄÀÏÀÌ ¾ø½À´Ï´Ù.[%s](objectInfo.inf)\n", strName);
// return FALSE;
// }
char* pData = pDataHeader->m_pData;
memcpy((void*)this, pData, sizeof(CharacterData));
pData += sizeof(CharacterData);
// ¹Ùµð ÄÁµð¼Ç Á¤º¸
for (int i = 0; i < m_nBodyConditionNumber; i++)
{
CBodyConditionInfo* pBody = new CBodyConditionInfo;
memcpy((void*)pBody, pData, sizeof(BodyConditionData));
pData += sizeof(BodyConditionData);
pBody->m_pParent = this;
m_mapBodyCondition[pBody->m_nBodyCondition] = pBody;
// ÀÌÆåÆ® Á¤º¸
DBGOUT_EFFECT(" BodyCondition[%I64X]\n", pBody->m_nBodyCondition );
for (int j = 0; j < pBody->m_nEffectNumber; j++)
{
CEffectInfo* pEffect = new CEffectInfo;
memcpy((void*)pEffect, pData, sizeof(EffectData));
pData += sizeof(EffectData);
pEffect->m_pParent = pBody;
// 2010. 03. 18 by jskim ¸ó½ºÅͺ¯½Å Ä«µå
if (nMonsterTransformer)
{
pEffect->m_vPos.x *= nMonsterTransScale;
pEffect->m_vPos.y *= nMonsterTransScale;
pEffect->m_vPos.z *= nMonsterTransScale;
}
//end 2010. 03. 18 by jskim ¸ó½ºÅͺ¯½Å Ä«µå
pBody->m_vecEffect.push_back(pEffect);
DBGOUT_EFFECT(" Effect[%s]\n", pEffect->m_strEffectName);
}
}
return TRUE;
}
the wrong line is this one:
Code:
memcpy((void*)pEffect, pData, sizeof(EffectData));
as CEffectInfo have for parent EffectData his size is bigger than Effect data, so it's mean pData can not be read for sizeof(EffectData) bytes.
this trouble arrive actually only to one player, and I don't find a way to solve it (searching since yesterday)
if you have any Idea to make me on the way to solve it I will be happy to read it.
(or my be my asset file have something wrong, but I don't thing cause other player doesn't have any trouble)