mirror of
https://github.com/reactos/reactos.git
synced 2024-10-04 16:36:11 +00:00
Fixed the calculation of the hash for the process data.
svn path=/trunk/; revision=18756
This commit is contained in:
parent
fea86552f0
commit
aaa2a0d33a
|
@ -37,7 +37,7 @@ PCSRSS_PROCESS_DATA STDCALL CsrGetProcessData(HANDLE ProcessId)
|
||||||
ULONG hash;
|
ULONG hash;
|
||||||
PCSRSS_PROCESS_DATA pProcessData;
|
PCSRSS_PROCESS_DATA pProcessData;
|
||||||
|
|
||||||
hash = ((ULONG_PTR)ProcessId & ~0x3) % (sizeof(ProcessData) / sizeof(*ProcessData));
|
hash = ((ULONG_PTR)ProcessId >> 2) % (sizeof(ProcessData) / sizeof(*ProcessData));
|
||||||
|
|
||||||
LOCK;
|
LOCK;
|
||||||
|
|
||||||
|
@ -59,7 +59,7 @@ PCSRSS_PROCESS_DATA STDCALL CsrCreateProcessData(HANDLE ProcessId)
|
||||||
CLIENT_ID ClientId;
|
CLIENT_ID ClientId;
|
||||||
NTSTATUS Status;
|
NTSTATUS Status;
|
||||||
|
|
||||||
hash = ((ULONG_PTR)ProcessId & ~0x3) % (sizeof(ProcessData) / sizeof(*ProcessData));
|
hash = ((ULONG_PTR)ProcessId >> 2) % (sizeof(ProcessData) / sizeof(*ProcessData));
|
||||||
|
|
||||||
LOCK;
|
LOCK;
|
||||||
|
|
||||||
|
@ -100,9 +100,12 @@ PCSRSS_PROCESS_DATA STDCALL CsrCreateProcessData(HANDLE ProcessId)
|
||||||
RtlFreeHeap(CsrssApiHeap, 0, pProcessData);
|
RtlFreeHeap(CsrssApiHeap, 0, pProcessData);
|
||||||
pProcessData = NULL;
|
pProcessData = NULL;
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
RtlInitializeCriticalSection(&pProcessData->HandleTableLock);
|
RtlInitializeCriticalSection(&pProcessData->HandleTableLock);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
DPRINT("Process data for pid %d already exist\n", ProcessId);
|
DPRINT("Process data for pid %d already exist\n", ProcessId);
|
||||||
|
@ -110,7 +113,7 @@ PCSRSS_PROCESS_DATA STDCALL CsrCreateProcessData(HANDLE ProcessId)
|
||||||
UNLOCK;
|
UNLOCK;
|
||||||
if (pProcessData == NULL)
|
if (pProcessData == NULL)
|
||||||
{
|
{
|
||||||
DbgPrint("CSR: CsrGetProcessData() failed\n");
|
DPRINT1("CsrCreateProcessData() failed\n");
|
||||||
}
|
}
|
||||||
return pProcessData;
|
return pProcessData;
|
||||||
}
|
}
|
||||||
|
@ -121,7 +124,7 @@ NTSTATUS STDCALL CsrFreeProcessData(HANDLE Pid)
|
||||||
UINT c;
|
UINT c;
|
||||||
PCSRSS_PROCESS_DATA pProcessData, pPrevProcessData = NULL;
|
PCSRSS_PROCESS_DATA pProcessData, pPrevProcessData = NULL;
|
||||||
|
|
||||||
hash = ((ULONG_PTR)Pid & ~0x3) % (sizeof(ProcessData) / sizeof(*ProcessData));
|
hash = ((ULONG_PTR)Pid >> 2) % (sizeof(ProcessData) / sizeof(*ProcessData));
|
||||||
|
|
||||||
LOCK;
|
LOCK;
|
||||||
|
|
||||||
|
@ -142,9 +145,7 @@ NTSTATUS STDCALL CsrFreeProcessData(HANDLE Pid)
|
||||||
}
|
}
|
||||||
if (pProcessData->Console)
|
if (pProcessData->Console)
|
||||||
{
|
{
|
||||||
RtlEnterCriticalSection(&ProcessDataLock);
|
|
||||||
RemoveEntryList(&pProcessData->ProcessEntry);
|
RemoveEntryList(&pProcessData->ProcessEntry);
|
||||||
RtlLeaveCriticalSection(&ProcessDataLock);
|
|
||||||
}
|
}
|
||||||
if (pProcessData->HandleTable)
|
if (pProcessData->HandleTable)
|
||||||
{
|
{
|
||||||
|
|
Loading…
Reference in a new issue