From e3a7c6c7e7a18afaa9e47c3ddb9115a41e2fda51 Mon Sep 17 00:00:00 2001 From: Nikolay Sivov Date: Sat, 26 Sep 2009 15:55:27 +0400 Subject: [PATCH] comctl32/monthcal: Fix memory leak on MCN_GETDAYSTATE notification. --- dlls/comctl32/monthcal.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/dlls/comctl32/monthcal.c b/dlls/comctl32/monthcal.c index 9cee5fc018a..da458286441 100644 --- a/dlls/comctl32/monthcal.c +++ b/dlls/comctl32/monthcal.c @@ -1233,7 +1233,7 @@ static void MONTHCAL_GoToNextMonth(MONTHCAL_INFO *infoPtr) if(infoPtr->dwStyle & MCS_DAYSTATE) { NMDAYSTATE nmds; - int i; + INT i; nmds.nmhdr.hwndFrom = infoPtr->hwndSelf; nmds.nmhdr.idFrom = GetWindowLongPtrW(infoPtr->hwndSelf, GWLP_ID); @@ -1242,13 +1242,15 @@ static void MONTHCAL_GoToNextMonth(MONTHCAL_INFO *infoPtr) nmds.prgDayState = Alloc(infoPtr->monthRange * sizeof(MONTHDAYSTATE)); nmds.stStart = infoPtr->todaysDate; - nmds.stStart.wYear = infoPtr->curSel.wYear; + nmds.stStart.wYear = infoPtr->curSel.wYear; nmds.stStart.wMonth = infoPtr->curSel.wMonth; nmds.stStart.wDay = 1; SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, nmds.nmhdr.idFrom, (LPARAM)&nmds); - for(i=0; imonthRange; i++) + for(i = 0; i < infoPtr->monthRange; i++) infoPtr->monthdayState[i] = nmds.prgDayState[i]; + + Free(nmds.prgDayState); } } @@ -1265,23 +1267,24 @@ static void MONTHCAL_GoToPrevMonth(MONTHCAL_INFO *infoPtr) if(infoPtr->dwStyle & MCS_DAYSTATE) { NMDAYSTATE nmds; - int i; + INT i; nmds.nmhdr.hwndFrom = infoPtr->hwndSelf; nmds.nmhdr.idFrom = GetWindowLongPtrW(infoPtr->hwndSelf, GWLP_ID); nmds.nmhdr.code = MCN_GETDAYSTATE; nmds.cDayState = infoPtr->monthRange; - nmds.prgDayState = Alloc - (infoPtr->monthRange * sizeof(MONTHDAYSTATE)); + nmds.prgDayState = Alloc(infoPtr->monthRange * sizeof(MONTHDAYSTATE)); nmds.stStart = infoPtr->todaysDate; - nmds.stStart.wYear = infoPtr->curSel.wYear; + nmds.stStart.wYear = infoPtr->curSel.wYear; nmds.stStart.wMonth = infoPtr->curSel.wMonth; nmds.stStart.wDay = 1; SendMessageW(infoPtr->hwndNotify, WM_NOTIFY, nmds.nmhdr.idFrom, (LPARAM)&nmds); - for(i=0; imonthRange; i++) + for(i = 0; i < infoPtr->monthRange; i++) infoPtr->monthdayState[i] = nmds.prgDayState[i]; + + Free(nmds.prgDayState); } }