main
1#define NOTLIBC_NOMAIN
2#include "notlibc.c"
3
4void PRESERVE_WITH_LTO entry(void) {
5
6 Status s = S_SUCCESS;
7
8 Heap h = Heap_create( &s, KiB(8) );
9 assert(S_OK( s ));
10
11 void *ptr1 = Heap_alloc( &s, &h, 32 );
12 assert(S_OK( s ));
13
14 void *ptr2 = Heap_alloc( &s, &h, 32 );
15 assert(S_OK( s ));
16
17 void *original_ptr1 = ptr1;
18
19 for( usize i = 0; i < 32; ++i ) {
20 ((u8*)ptr1)[i] = 'h';
21 ((u8*)ptr2)[i] = 'i';
22 }
23
24 Heap_free( &s, &h, ptr1 );
25 assert(S_OK( s ));
26
27 #if BUILD_TYPE == BUILD_RELEASE
28 Heap_alloc( &s, &h, 0 );
29 assert(S_NOK( s ));
30 s = S_SUCCESS;
31 #endif
32
33 void *ptr3 = 0;
34 ptr3 = Heap_alloc( &s, &h, 32 );
35 assert(S_OK( s ));
36
37 assert( ptr3 == original_ptr1 );
38
39 Heap_free( &s, &h, ptr3 );
40 assert(S_OK( s ));
41
42 Heap_free( &s, &h, ptr2 );
43 assert(S_OK( s ));
44
45 Heap_destroy( &s, &h);
46 assert(S_OK( s ));
47
48 terminate(0);
49}