Added NULL checks for the CConfigParser::ReadString()'s parameters (http://code.google.com/p/rainmeter/issues/detail?id=105).

The font and registry handle are now free'ed properly if Initialize() is called multiple times.
This commit is contained in:
Kimmo Pekkola 2009-09-02 17:04:47 +00:00
parent 81f674117d
commit 9fcd6896de
3 changed files with 17 additions and 0 deletions

View File

@ -136,6 +136,19 @@ const std::wstring& CConfigParser::ReadString(LPCTSTR section, LPCTSTR key, LPCT
{
static std::wstring result;
if (section == NULL)
{
section = L"";
}
if (key == NULL)
{
key = L"";
}
if (defValue == NULL)
{
defValue = L"";
}
result = GetValue(section, key, defValue);
if (result == defValue)
{

View File

@ -154,6 +154,7 @@ void CMeasureRegistry::ReadConfig(CConfigParser& parser, const WCHAR* section)
}
// Try to open the key
if(m_RegKey) RegCloseKey(m_RegKey);
RegOpenKeyEx(m_HKey, m_RegKeyName.c_str(), 0, KEY_READ, &m_RegKey);
}

View File

@ -106,6 +106,7 @@ void CMeterString::Initialize()
{
CMeter::Initialize();
if(m_FontFamily) delete m_FontFamily;
m_FontFamily = new FontFamily(m_FontFace.c_str());
Status status = m_FontFamily->GetLastStatus();
if(Ok != status)
@ -140,10 +141,12 @@ void CMeterString::Initialize()
if (m_FontFamily)
{
if(m_Font) delete m_Font;
m_Font = new Gdiplus::Font(m_FontFamily, size, style);
}
else
{
if(m_Font) delete m_Font;
m_Font = new Gdiplus::Font(FontFamily::GenericSansSerif(), size, style);
}