- Chek if there is something to do in GDIOBJ_SetOwnership before doing it

svn path=/trunk/; revision=47788
This commit is contained in:
Jérôme Gardou 2010-06-16 18:47:04 +00:00
parent 1a601ba9e5
commit 57d80a50d5

View file

@ -1412,6 +1412,19 @@ LockHandle:
PPROCESSINFO W32Process;
NTSTATUS Status;
if (NewOwner != NULL)
{
ProcessId = PsGetProcessId(NewOwner);
}
else
ProcessId = 0;
if((ULONG_PTR)ProcessId == ((ULONG_PTR)PrevProcId & ~0x1))
{
DPRINT("Setting same process than previous one, nothing to do\n");
goto done;
}
/* dereference the process' object counter */
/* FIXME */
if ((ULONG_PTR)PrevProcId & ~0x1)
@ -1430,8 +1443,6 @@ LockHandle:
if (NewOwner != NULL)
{
ProcessId = PsGetProcessId(NewOwner);
/* Increase the new process' object counter */
W32Process = (PPROCESSINFO)NewOwner->Win32Process;
if (W32Process != NULL)
@ -1439,9 +1450,8 @@ LockHandle:
InterlockedIncrement(&W32Process->GDIHandleCount);
}
}
else
ProcessId = 0;
done:
/* remove the process id lock and change it to the new process id */
(void)InterlockedExchangePointer((PVOID*)&Entry->ProcessId, ProcessId);