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}