Changeset 7890 for trunk/src


Ignore:
Timestamp:
Feb 12, 2002, 7:07:21 PM (24 years ago)
Author:
sandervl
Message:

Fixed reference count leaks

Location:
trunk/src/user32
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/user32/win32wbase.cpp

    r7801 r7890  
    1 /* $Id: win32wbase.cpp,v 1.313 2002-02-05 17:59:00 sandervl Exp $ */
     1/* $Id: win32wbase.cpp,v 1.314 2002-02-12 18:07:20 sandervl Exp $ */
    22/*
    33 * Win32 Window Base Class for OS/2
     
    279279        if(getParent()->IsWindowDestroyed())
    280280        {
     281            Win32BaseWindow *wndparent = (Win32BaseWindow *)ChildWindow::getParentOfChild();
     282            RELEASE_WNDOBJ(wndparent);
    281283            setParent(NULL);  //or else we'll crash in the dtor of the ChildWindow class
    282284        }
    283285    }
     286    else
     287    {
     288        Win32BaseWindow *wndparent = (Win32BaseWindow *)ChildWindow::getParentOfChild();
     289        if(wndparent && !fDestroyAll) {
     290            RELEASE_WNDOBJ(wndparent);
     291        }
     292    }
     293    if(owner && !fDestroyAll) {
     294        RELEASE_WNDOBJ(owner);
     295    }
     296
    284297    /* Decrement class window counter */
    285298    if(windowClass) {
     
    314327    if(propertyList) {
    315328        removeWindowProps();
    316     }
    317     Win32BaseWindow *wndparent = (Win32BaseWindow *)ChildWindow::getParentOfChild();
    318     if(wndparent && !fDestroyAll) {
    319         RELEASE_WNDOBJ(wndparent);
    320     }
    321     if(owner && !fDestroyAll) {
    322         RELEASE_WNDOBJ(owner);
    323329    }
    324330}
     
    957963    else {
    958964        //make sure no message can ever arrive for this window again (PM or from other win32 windows)
    959         dprintf(("Mark window %x (%x) as deleted", getWindowHandle(), this));
     965        dprintf(("Mark window %x (%x) as deleted; refcount %d", getWindowHandle(), this, getRefCount()));
    960966        markDeleted();
    961967        OSLibWinSetWindowULong(OS2Hwnd, OFFSET_WIN32WNDPTR, 0);
  • trunk/src/user32/windlg.cpp

    r7506 r7890  
    1 /* $Id: windlg.cpp,v 1.29 2001-11-30 18:45:51 sandervl Exp $ */
     1/* $Id: windlg.cpp,v 1.30 2002-02-12 18:07:21 sandervl Exp $ */
    22/*
    33 * Win32 dialog apis for OS/2
     
    443443{
    444444  Win32BaseWindow *dlgcontrol;
     445  int              ret;
    445446
    446447    dlgcontrol = Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    451452    }
    452453    dprintf(("USER32: GetDlgCtrlID %x", hwnd));
    453     return dlgcontrol->getWindowId();
     454    ret = dlgcontrol->getWindowId();
     455    RELEASE_WNDOBJ(dlgcontrol);
     456    return ret;
    454457}
    455458//******************************************************************************
     
    458461{
    459462  Win32Dialog *dialog;
     463  BOOL         ret;
    460464
    461465    dialog = (Win32Dialog *)Win32BaseWindow::GetWindowFromHandle(hwnd);
     
    465469        return 0;
    466470    }
    467     dprintf(("USER32: EndDialog %x %d", hwnd, retval));
    468     return dialog->endDialog(retval);
     471    ret = dialog->endDialog(retval);
     472    RELEASE_WNDOBJ(dialog);
     473    return ret;
    469474}
    470475//******************************************************************************
  • trunk/src/user32/window.cpp

    r7887 r7890  
    1 /* $Id: window.cpp,v 1.119 2002-02-12 13:10:14 sandervl Exp $ */
     1/* $Id: window.cpp,v 1.120 2002-02-12 18:07:21 sandervl Exp $ */
    22/*
    33 * Win32 window apis for OS/2
     
    11021102    if(wndFrom != windowDesktop)
    11031103    {
    1104     window = wndFrom;
     1104        window = wndFrom;
    11051105        while(window)
    11061106        {
     
    11141114    if(wndTo != windowDesktop)
    11151115    {
    1116     window = wndTo;
     1116        window = wndTo;
    11171117        while(window)
    11181118        {
     
    12081208HWND WIN32API GetDesktopWindow(void)
    12091209{
    1210     HWND DesktopWindow = windowDesktop->getWindowHandle();
    1211     dprintf2(("USER32: GetDesktopWindow, returned %x\n", DesktopWindow));
    1212     return DesktopWindow;
     1210    HWND hDesktopWindow = windowDesktop->getWindowHandle();
     1211    dprintf2(("USER32: GetDesktopWindow, returned %x\n", hDesktopWindow));
     1212    return hDesktopWindow;
    12131213}
    12141214//******************************************************************************
Note: See TracChangeset for help on using the changeset viewer.