update for HEAD-2003091401
[reactos.git] / lib / crtdll / malloc / expand.c
1 #include <windows.h>
2 #include <kernel32/heap.h>
3 #include <msvcrt/malloc.h>
4 #include <msvcrt/stdlib.h>
5
6 /*
7  * @implemented
8  */
9 void* _expand(void* pold, size_t size)
10 {
11    PHEAP_BUCKET pbucket;
12    PHEAP_SUBALLOC psub;
13    PHEAP_FRAGMENT pfrag = (PHEAP_FRAGMENT)((LPVOID)pold-HEAP_FRAG_ADMIN_SIZE);
14    
15    /* sanity checks */
16    if (pfrag->Magic != HEAP_FRAG_MAGIC)
17       return NULL;
18
19    /* get bucket size */
20    psub = pfrag->Sub;
21    pbucket = psub->Bucket;
22    if(size <= pbucket->Size) {
23       pfrag->Size=size;
24       return pold;
25    }
26    else
27       return NULL;
28    return NULL;
29 }
30
31 /*
32  * @implemented
33  */
34 size_t _msize(void* pBlock)
35 {
36    PHEAP_BUCKET pbucket;
37    PHEAP_SUBALLOC psub;
38    PHEAP_FRAGMENT pfrag = (PHEAP_FRAGMENT)((LPVOID)pBlock-HEAP_FRAG_ADMIN_SIZE);
39    
40    /* sanity checks */
41    if (pfrag->Magic != HEAP_FRAG_MAGIC)
42       return 0;
43
44    /* get bucket size */
45    psub = pfrag->Sub;
46    pbucket = psub->Bucket;
47    return pbucket->Size;
48 }