More checks before to get a pointer on a CCDBNodeLeaf, fixes #251

--HG--
branch : develop
This commit is contained in:
kervala 2015-11-06 15:47:58 +01:00
parent 93a03b5db0
commit 2baddc78ac
2 changed files with 69 additions and 26 deletions

View file

@ -1950,8 +1950,14 @@ void CInterfaceManager::drawViews(NL3D::UCamera camera)
nlctassert(CHARACTERISTICS::NUM_CHARACTERISTICS==8);
for (uint i=0; i<CHARACTERISTICS::NUM_CHARACTERISTICS; ++i)
{
NLMISC::CCDBNodeLeaf *node = _CurrentPlayerCharacLeaf[i] ? &*_CurrentPlayerCharacLeaf[i]
: &*(_CurrentPlayerCharacLeaf[i] = NLGUI::CDBManager::getInstance()->getDbProp(toString("SERVER:CHARACTER_INFO:CHARACTERISTICS%d:VALUE", i), false));
if (!_CurrentPlayerCharacLeaf[i])
_CurrentPlayerCharacLeaf[i] = NLGUI::CDBManager::getInstance()->getDbProp(toString("SERVER:CHARACTER_INFO:CHARACTERISTICS%d:VALUE", i), false);
NLMISC::CCDBNodeLeaf *node = NULL;
if (_CurrentPlayerCharacLeaf[i])
node = &*_CurrentPlayerCharacLeaf[i];
_CurrentPlayerCharac[i] = node ? node->getValue32() : 0;
}

View file

@ -3883,32 +3883,69 @@ bool CNetManager::update()
CInterfaceManager *im = CInterfaceManager::getInstance();
if (im)
{
CCDBNodeLeaf *node = m_PingLeaf ? &*m_PingLeaf
: &*(m_PingLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:PING", false));
CCDBNodeLeaf *node = NULL;
if (!m_PingLeaf)
m_PingLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:PING", false);
if (m_PingLeaf)
{
node = &*m_PingLeaf;
if (node)
node->setValue32(getPing());
node = m_UploadLeaf ? &*m_UploadLeaf
: &*(m_UploadLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:UPLOAD", false));
}
if (!m_UploadLeaf)
m_UploadLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:UPLOAD", false);
if (m_UploadLeaf)
{
node = &*m_UploadLeaf;
if (node)
node->setValue32((sint32)(getMeanUpload()*1024.f/8.f));
node = m_DownloadLeaf ? &*m_DownloadLeaf
: &*(m_DownloadLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:DOWNLOAD", false));
}
if (!m_DownloadLeaf)
m_DownloadLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:DOWNLOAD", false);
if (m_DownloadLeaf)
{
node = &*m_DownloadLeaf;
if (node)
node->setValue32((sint32)(getMeanDownload()*1024.f/8.f));
node = m_PacketLostLeaf ? &* m_PacketLostLeaf
: &*(m_PacketLostLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:PACKETLOST", false));
}
if (!m_PacketLostLeaf)
m_PacketLostLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:PACKETLOST", false);
if (m_PacketLostLeaf)
{
node = &*m_PacketLostLeaf;
if (node)
node->setValue32((sint32)getMeanPacketLoss());
node = m_ServerStateLeaf ? &*m_ServerStateLeaf
: &*(m_ServerStateLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:SERVERSTATE", false));
}
if (!m_ServerStateLeaf)
m_ServerStateLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:SERVERSTATE", false);
if (m_ServerStateLeaf)
{
node = &*m_ServerStateLeaf;
if (node)
node->setValue32((sint32)getConnectionState());
node = m_ConnectionQualityLeaf ? &*m_ConnectionQualityLeaf
: &*(m_ConnectionQualityLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:CONNECTION_QUALITY", false));
}
if (!m_ConnectionQualityLeaf)
m_ConnectionQualityLeaf = NLGUI::CDBManager::getInstance()->getDbProp("UI:VARIABLES:CONNECTION_QUALITY", false);
if (m_ConnectionQualityLeaf)
{
node = &*m_ConnectionQualityLeaf;
if (node)
node->setValue32((sint32)getConnectionQuality());
}
}
}
// Return 'true' if data were sent/received.
return result;