Hi,
please provide a patch in a unified diff format (preferably submit it
to
www.reactos.org/bugzilla for faster reviewing/commit process).
WBR,
Aleksey Bragin.
On Jan 13, 2008, at 6:11 PM, Oriol wrote:
here's the implementation and some corrections of
some unimplemented
functions at lib/rtl/heap.c
NTSTATUS NTAPI
RtlEnumProcessHeaps(PHEAP_ENUMERATION_ROUTINE HeapEnumerationRoutine,
PVOID lParam)
{
#if 1
NTSTATUS Status = STATUS_SUCCESS;
struct list *ptr=NULL;
RtlEnterHeapLock(&processHeap->critSection);
Status=HeapEnumerationRoutine(processHeap,lParam);
LIST_FOR_EACH( ptr, &processHeap->entry )
{
if (!NT_SUCCESS(Status))
break;
Status = HeapEnumerationRoutine(ptr,lParam);
}
RtlLeaveHeapLock(&processHeap->critSection);
return Status;
#endif
}
/*
* @implemented
*/
ULONG NTAPI
RtlGetProcessHeaps(ULONG count,
HANDLE *heaps )
{
ULONG total = 1; /* main heap */
struct list *ptr;
ULONG i=0;
RtlEnterHeapLock( &processHeap->critSection );
LIST_FOR_EACH( ptr, &processHeap->entry ) total++;
//if (total <= count)
{
*(heaps++) = processHeap;
i++;
LIST_FOR_EACH( ptr, &processHeap->entry )
{
if(i>=count)
{
break;
}
i++;
*(heaps++) = LIST_ENTRY( ptr, HEAP, entry );
}
}
RtlLeaveHeapLock( &processHeap->critSection );
return i;
}
/*
* @implemented
*/
BOOLEAN NTAPI
RtlValidateProcessHeaps(VOID)
{
#if 1
BOOLEAN Result = TRUE;
HEAP ** pptr;
RtlEnterHeapLock( &processHeap->critSection );
for (pptr = (HEAP**)&NtCurrentPeb()->ProcessHeaps; *pptr; pptr++)
{
if (!RtlValidateHeap(*pptr, 0, NULL))
{
Result = FALSE;
break;
}
}
RtlLeaveHeapLock( &processHeap->critSection );
return Result;
#endif
}
is it correct?
______________________________________________
LLama Gratis a cualquier PC del Mundo.
Llamadas a fijos y móviles desde 1 céntimo por minuto.
http://es.voice.yahoo.com
_______________________________________________
Ros-dev mailing list
Ros-dev(a)reactos.org
http://www.reactos.org/mailman/listinfo/ros-dev