update for HEAD-2003021201
[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 void* _expand(void* pold, size_t size)
7 {
8    PHEAP_BUCKET pbucket;
9    PHEAP_SUBALLOC psub;
10    PHEAP_FRAGMENT pfrag = (PHEAP_FRAGMENT)((LPVOID)pold-HEAP_FRAG_ADMIN_SIZE);
11    
12    /* sanity checks */
13    if (pfrag->Magic != HEAP_FRAG_MAGIC)
14       return NULL;
15
16    /* get bucket size */
17    psub = pfrag->Sub;
18    pbucket = psub->Bucket;
19    if(size <= pbucket->Size) {
20       pfrag->Size=size;
21       return pold;
22    }
23    else
24       return NULL;
25    return NULL;
26 }
27
28 size_t _msize(void* pBlock)
29 {
30    PHEAP_BUCKET pbucket;
31    PHEAP_SUBALLOC psub;
32    PHEAP_FRAGMENT pfrag = (PHEAP_FRAGMENT)((LPVOID)pBlock-HEAP_FRAG_ADMIN_SIZE);
33    
34    /* sanity checks */
35    if (pfrag->Magic != HEAP_FRAG_MAGIC)
36       return 0;
37
38    /* get bucket size */
39    psub = pfrag->Sub;
40    pbucket = psub->Bucket;
41    return pbucket->Size;
42 }