From: John D. <go...@us...> - 2003-09-05 03:19:45
|
Log Message: ----------- Fixed crash when IDing a monster Modified Files: -------------- /cvsroot/decaldev/source/DecalFilters: World.cpp Revision Data ------------- Index: World.cpp =================================================================== RCS file: /cvsroot/decaldev/source/DecalFilters/World.cpp,v retrieving revision 1.51 retrieving revision 1.52 diff -u -d -r1.51 -r1.52 --- World.cpp 3 Sep 2003 02:10:58 -0000 1.51 +++ World.cpp 5 Sep 2003 03:19:42 -0000 1.52 @@ -895,7 +895,8 @@ CComPtr<IMessageIterator> pItems, pItem; pMembers->get_NextObject(strdwords, &pItems); - while (SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { + + while (pItems != NULL && SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { long key, value ; pItem->get_NextInt(strkey, &key) ; pItem->get_NextInt(strvalue, &value) ; @@ -924,21 +925,17 @@ _DebugLog("\nGetting iterator") ; pMembers->get_NextObject(strdoubles, &pItems); - if (pItems == NULL) { - _DebugLog("\nFailed getting iterator!") ; - } else { - _DebugLog("\nGetting object") ; - while (SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { - long key ; - float value ; - _DebugLog("\nGetting key") ; - pItem->get_NextInt(strkey, &key) ; - _DebugLog("\nGetting value") ; - pItem->get_NextFloat(strvalue, &value) ; - _DebugLog("\n key:%d value:%f || ", key, value) ; - switch (key) { - case 0x90: pData->m_ManaCMod = value ; _DebugLog("ManaCMod %f", value) ; break ; - } + _DebugLog("\nGetting object") ; + while (pItems != NULL && SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { + long key ; + float value ; + _DebugLog("\nGetting key") ; + pItem->get_NextInt(strkey, &key) ; + _DebugLog("\nGetting value") ; + pItem->get_NextFloat(strvalue, &value) ; + _DebugLog("\n key:%d value:%f || ", key, value) ; + switch (key) { + case 0x90: pData->m_ManaCMod = value ; _DebugLog("ManaCMod %f", value) ; break ; } } } @@ -949,21 +946,17 @@ CComPtr<IMessageIterator> pItems, pItem; pMembers->get_NextObject(strstrings, &pItems); - if (pItems == NULL) { - _DebugLog("\nNo strings") ; - } else { - while (SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { - long key ; - BSTR value ; - pItem->get_NextInt(strkey, &key) ; - pItem->get_NextString(strstring, &value) ; - std::string sValue = OLE2A(value) ; - _DebugLog("\n key:%d value:%s || ", key, sValue.c_str()) ; + while (pItems != NULL && SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { + long key ; + BSTR value ; + pItem->get_NextInt(strkey, &key) ; + pItem->get_NextString(strstring, &value) ; + std::string sValue = OLE2A(value) ; + _DebugLog("\n key:%d value:%s || ", key, sValue.c_str()) ; - switch (key) { - case 0x07: pData->m_Inscription = sValue ; _DebugLog("Inscription") ; break ; - case 0x13: pData->m_RaceReq = sValue ; _DebugLog("RaceReq") ; break ; - } + switch (key) { + case 0x07: pData->m_Inscription = sValue ; _DebugLog("Inscription") ; break ; + case 0x13: pData->m_RaceReq = sValue ; _DebugLog("RaceReq") ; break ; } } } @@ -973,23 +966,18 @@ CComPtr<IMessageIterator> pItems, pItem; pMembers->get_NextObject(strspells, &pItems); + int ix=0 ; + while (pItems != NULL && SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { + long spellID, spellFlag ; + pItem->get_NextInt(strspellID, &spellID) ; + pItem->get_NextInt(strspellFlag, &spellFlag) ; - if (pItems == NULL) { - _DebugLog("\nNo spells") ; - } else { - int ix=0 ; - while (SUCCEEDED(pItems->get_NextObjectIndex(&pItem))) { - long spellID, spellFlag ; - pItem->get_NextInt(strspellID, &spellID) ; - pItem->get_NextInt(strspellFlag, &spellFlag) ; - - _DebugLog("\n key:%d value:%d || ", spellID, spellFlag) ; - if (spellFlag == 0 && ix < 10) { - pData->m_Spell[ix++] = spellID ; - } + _DebugLog("\n key:%d value:%d || ", spellID, spellFlag) ; + if (spellFlag == 0 && ix < 10) { + pData->m_Spell[ix++] = spellID ; } - pData->m_SpellCount = ix ; } + pData->m_SpellCount = ix ; } if (ObjectIdMask && 0x0020) { _DebugLog("\nChecking damages") ; |