[win32k]
authorGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 28 Oct 2012 17:31:33 +0000 (17:31 +0000)
committerGiannis Adamopoulos <gadamopoulos@reactos.org>
Sun, 28 Oct 2012 17:31:33 +0000 (17:31 +0000)
- Plug some object leaks in callproc and clipboard code

svn path=/trunk/; revision=57642

reactos/win32ss/user/ntuser/callproc.c
reactos/win32ss/user/ntuser/clipboard.c

index 3d0f2fc..815cee5 100644 (file)
@@ -46,6 +46,9 @@ CreateCallProc(IN PDESKTOP Desktop,
         NewCallProc->spcpdNext = NULL;
     }
 
+    /* Release the extra reference (UserCreateObject added 2 references) */
+    UserDereferenceObject(NewCallProc);
+
     return NewCallProc;
 }
 
index e238e54..72bac91 100644 (file)
@@ -211,6 +211,9 @@ IntSynthesizeDib(
     /* Add the clipboard data */
     IntAddFormatedData(pWinStaObj, CF_DIB, hMem, TRUE, TRUE);
 
+    /* Release the extra reference (UserCreateObject added 2 references) */
+    UserDereferenceObject(pClipboardData);
+
 cleanup:
     UserReleaseDC(NULL, hdc, FALSE);
 }
@@ -302,6 +305,9 @@ IntAddSynthesizedFormats(PWINSTATION_OBJECT pWinStaObj)
             *((LCID*)pMemObj->Data) = NtCurrentTeb()->CurrentLocale;
             IntAddFormatedData(pWinStaObj, CF_LOCALE, hMem, TRUE, TRUE);
         }
+
+        /* Release the extra reference (UserCreateObject added 2 references) */
+        UserDereferenceObject(pMemObj);
     }
 
     /* Add CF_TEXT. Note: it is synthesized in user32.dll */
@@ -1099,6 +1105,9 @@ NtUserConvertMemHandle(
     }
     _SEH2_END;
 
+    /* Release the extra reference (UserCreateObject added 2 references) */
+    UserDereferenceObject(pMemObj);
+
     /* If we failed to copy data, remove handle */
     if (!pMemObj)
     {