-fix resource leaks

-don't free memory allocated by LocalAlloc with HeapFree

svn path=/trunk/; revision=36352
This commit is contained in:
Christoph von Wittich 2008-09-20 14:13:10 +00:00
parent 9c3ba3b526
commit 64048965fe
4 changed files with 15 additions and 9 deletions

View file

@ -23,8 +23,7 @@
int main(int argc, char *argv[]) int main(int argc, char *argv[])
{ {
GUID m_guid; GUID m_guid = GUID_NULL;
m_guid = GUID_NULL;
int arg; int arg;
HRESULT result; HRESULT result;
char *strfmt = ""; char *strfmt = "";

View file

@ -108,10 +108,11 @@ DrawProc(IN PFONT_WND_INFO Info, IN PAINTSTRUCT* ps)
UCHAR uCharacterRow; UCHAR uCharacterRow;
UCHAR uBit; UCHAR uBit;
WCHAR szInfoText[9]; WCHAR szInfoText[9];
HBITMAP hBitmapOld;
// Preparations // Preparations
hBoxDC = CreateCompatibleDC(NULL); hBoxDC = CreateCompatibleDC(NULL);
SelectObject(hBoxDC, Info->MainWndInfo->hBoxBmp); hBitmapOld = SelectObject(hBoxDC, Info->MainWndInfo->hBoxBmp);
hFont = CreateFontW(13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, L"Tahoma"); hFont = CreateFontW(13, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, L"Tahoma");
hOldFont = SelectObject(ps->hdc, hFont); hOldFont = SelectObject(ps->hdc, hFont);
@ -177,6 +178,7 @@ DrawProc(IN PFONT_WND_INFO Info, IN PAINTSTRUCT* ps)
} }
} }
SelectObject(hBoxDC, hBitmapOld);
SelectObject(ps->hdc, hOldFont); SelectObject(ps->hdc, hOldFont);
DeleteObject(hFont); DeleteObject(hFont);
SelectObject(ps->hdc, hOldBrush); SelectObject(ps->hdc, hOldBrush);

View file

@ -146,7 +146,7 @@ FontWndProc(HWND hwnd, UINT uMsg, WPARAM wParam, LPARAM lParam)
LoadAndFormatString(IDS_SAVEPROMPT, &pszPrompt, szFile); LoadAndFormatString(IDS_SAVEPROMPT, &pszPrompt, szFile);
nMsgBoxResult = MessageBoxW(hwnd, pszPrompt, szAppName, MB_YESNOCANCEL | MB_ICONQUESTION); nMsgBoxResult = MessageBoxW(hwnd, pszPrompt, szAppName, MB_YESNOCANCEL | MB_ICONQUESTION);
HeapFree(hProcessHeap, 0, pszPrompt); LocalFree(pszPrompt);
switch(nMsgBoxResult) switch(nMsgBoxResult)
{ {
@ -394,7 +394,7 @@ CreateFontWindow(IN PMAIN_WND_INFO MainWndInfo, IN PFONT_OPEN_INFO OpenInfo)
(LPARAM)Info ); (LPARAM)Info );
if(!OpenInfo->pszFileName) if(!OpenInfo->pszFileName)
HeapFree(hProcessHeap, 0, pszWindowTitle); LocalFree(pszWindowTitle);
if(hFontWnd) if(hFontWnd)
{ {

View file

@ -15,15 +15,16 @@ InitResources(IN PMAIN_WND_INFO Info)
{ {
HDC hMemDC; HDC hMemDC;
HDC hMainDC; HDC hMainDC;
HPEN hPen; HPEN hPen, hPenOld;
RECT rect; RECT rect;
HBITMAP hBitmapOld;
hMemDC = CreateCompatibleDC(NULL); hMemDC = CreateCompatibleDC(NULL);
hMainDC = GetDC(Info->hMainWnd); hMainDC = GetDC(Info->hMainWnd);
// Create the "Box" bitmap // Create the "Box" bitmap
Info->hBoxBmp = CreateCompatibleBitmap(hMainDC, CHARACTER_BOX_WIDTH, CHARACTER_BOX_HEIGHT); Info->hBoxBmp = CreateCompatibleBitmap(hMainDC, CHARACTER_BOX_WIDTH, CHARACTER_BOX_HEIGHT);
SelectObject(hMemDC, Info->hBoxBmp); hBitmapOld = SelectObject(hMemDC, Info->hBoxBmp);
rect.left = 0; rect.left = 0;
rect.top = 0; rect.top = 0;
@ -31,20 +32,24 @@ InitResources(IN PMAIN_WND_INFO Info)
rect.bottom = CHARACTER_INFO_BOX_HEIGHT; rect.bottom = CHARACTER_INFO_BOX_HEIGHT;
FillRect( hMemDC, &rect, (HBRUSH)(COLOR_BTNFACE + 1) ); FillRect( hMemDC, &rect, (HBRUSH)(COLOR_BTNFACE + 1) );
SelectObject( hMemDC, GetStockObject(WHITE_PEN) ); hPenOld = SelectObject( hMemDC, GetStockObject(WHITE_PEN) );
Rectangle(hMemDC, 0, 0, CHARACTER_INFO_BOX_WIDTH - 1, 2); Rectangle(hMemDC, 0, 0, CHARACTER_INFO_BOX_WIDTH - 1, 2);
Rectangle(hMemDC, 0, 2, 2, CHARACTER_INFO_BOX_HEIGHT - 1); Rectangle(hMemDC, 0, 2, 2, CHARACTER_INFO_BOX_HEIGHT - 1);
hPen = SelectObject(hMemDC, hPenOld);
hPen = CreatePen( PS_SOLID, 1, RGB(128, 128, 128) ); hPen = CreatePen( PS_SOLID, 1, RGB(128, 128, 128) );
SelectObject(hMemDC, hPen); hPenOld = SelectObject(hMemDC, hPen);
Rectangle(hMemDC, 1, CHARACTER_INFO_BOX_HEIGHT - 2, CHARACTER_INFO_BOX_WIDTH, CHARACTER_INFO_BOX_HEIGHT); Rectangle(hMemDC, 1, CHARACTER_INFO_BOX_HEIGHT - 2, CHARACTER_INFO_BOX_WIDTH, CHARACTER_INFO_BOX_HEIGHT);
Rectangle(hMemDC, CHARACTER_INFO_BOX_WIDTH - 2, 1, CHARACTER_INFO_BOX_WIDTH, CHARACTER_INFO_BOX_HEIGHT - 2); Rectangle(hMemDC, CHARACTER_INFO_BOX_WIDTH - 2, 1, CHARACTER_INFO_BOX_WIDTH, CHARACTER_INFO_BOX_HEIGHT - 2);
SetPixel( hMemDC, CHARACTER_INFO_BOX_WIDTH - 1, 0, RGB(128, 128, 128) ); SetPixel( hMemDC, CHARACTER_INFO_BOX_WIDTH - 1, 0, RGB(128, 128, 128) );
SetPixel( hMemDC, 0, CHARACTER_INFO_BOX_HEIGHT - 1, RGB(128, 128, 128) ); SetPixel( hMemDC, 0, CHARACTER_INFO_BOX_HEIGHT - 1, RGB(128, 128, 128) );
SelectObject(hMemDC, hBitmapOld);
hPen = SelectObject(hMemDC, hPenOld);
DeleteObject(hPen); DeleteObject(hPen);
DeleteDC(hMemDC); DeleteDC(hMemDC);
ReleaseDC(Info->hMainWnd, hMainDC);
} }
static VOID static VOID