[NTDLL_APITESTS]
[reactos.git] / rostests / apitests / ntdll / RtlAllocateHeap.c
index 5fb1885..7202a7c 100644 (file)
@@ -15,11 +15,12 @@ PVOID Buffers[0x100];
 START_TEST(RtlAllocateHeap)
 {
     USHORT i;
 START_TEST(RtlAllocateHeap)
 {
     USHORT i;
+    HANDLE hHeap;
     BOOLEAN Aligned = TRUE;
     BOOLEAN Aligned = TRUE;
+    RTL_HEAP_PARAMETERS Parameters = {0};
 
     for (i = 0; i < 0x100; ++i)
     {
 
     for (i = 0; i < 0x100; ++i)
     {
-        SetLastError(0xdeadbeef);
         Buffers[i] = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_CREATE_ALIGN_16, (i % 16 ) + 1);
         ASSERT(Buffers[i] != NULL);
         if (!((ULONG_PTR)Buffers[i] & 0x2))
         Buffers[i] = RtlAllocateHeap(RtlGetProcessHeap(), HEAP_CREATE_ALIGN_16, (i % 16 ) + 1);
         ASSERT(Buffers[i] != NULL);
         if (!((ULONG_PTR)Buffers[i] & 0x2))
@@ -34,4 +35,31 @@ START_TEST(RtlAllocateHeap)
     }
 
     ok(Aligned  == FALSE, "No unaligned address returned\n");
     }
 
     ok(Aligned  == FALSE, "No unaligned address returned\n");
+
+    Aligned = TRUE;
+    Parameters.Length = sizeof(Parameters);
+    hHeap = RtlCreateHeap(HEAP_CREATE_ALIGN_16, NULL, 0, 0, NULL, &Parameters);
+    if (hHeap == NULL)
+    {
+        return;
+    }
+
+    for (i = 0; i < 0x100; ++i)
+    {
+        Buffers[i] = RtlAllocateHeap(RtlGetProcessHeap(), 0, (i % 16 ) + 1);
+        ASSERT(Buffers[i] != NULL);
+        if (!((ULONG_PTR)Buffers[i] & 0x2))
+        {
+            Aligned = FALSE;
+        }
+    }
+
+    for (i = 0; i < 0x100; ++i)
+    {
+        RtlFreeHeap(RtlGetProcessHeap(), 0, Buffers[i]);
+    }
+
+    RtlDestroyHeap(hHeap);
+
+    ok(Aligned  == FALSE, "No unaligned address returned\n");
 }
 }