source: tests/zombies/gc_no_raii/test/badlll.c@ 4883712

Last change on this file since 4883712 was 87b9332, checked in by Andrew Beach <ajbeach@…>, 5 years ago

Moved 'examples/' to 'tests/zombies/'.

  • Property mode set to 100644
File size: 957 bytes
RevLine 
[9421588a]1#include "gc.h"
2
[46f1d20]3#include <stdio.h>
4
[9421588a]5struct List_t
6{
7 gcpointer(List_t) next;
8 int val;
9};
[f1e42c1]10
11typedef gcpointer(List_t) LLL;
12
[76af36f]13#define MAX (1024 * 1)
[f1e42c1]14
[46f1d20]15LLL buildLLL(int sz)
16{
17 int i = 0;
[76af36f]18 LLL ll0;
[46f1d20]19
20 gcmalloc( &ll0 );
21 List_t* ll0_ptr = get( &ll0 );
22 ll0_ptr->val = i;
[76af36f]23 LLL lll = ll0;
[46f1d20]24
25 for (i = 1; i < sz; i++)
26 {
[76af36f]27 LLL llc;
[46f1d20]28 gcmalloc( &llc );
29 List_t* llc_ptr = get( &llc );
30 llc_ptr->val = i;
31 List_t* lll_ptr = get( &lll );
32 lll_ptr->next = llc;
33
34 lll = llc;
35 }
36
[4c1403c]37 check(is_valid( &ll0.internal ));
38
[46f1d20]39 return ll0;
40}
41
42void testLLL(LLL lll)
[f1e42c1]43{
[46f1d20]44 unsigned char *counted;
45
46 counted = (unsigned char *) calloc(MAX, sizeof(unsigned char));
47 while (lll)
48 {
49 List_t* lll_ptr = get( &lll );
50 counted[lll_ptr->val]++;
51 if (counted[lll_ptr->val] > 1)
52 {
53 fprintf(stderr, "ERROR! Encountered %d twice!\n", lll_ptr->val);
54 exit(1);
55 }
56 lll = lll_ptr->next;
57 }
58
59 return;
[bf5a70da]60}
61
62int main(void)
63{
64 LLL mylll;
65
[46f1d20]66 mylll = buildLLL(MAX);
67
68 testLLL(mylll);
[bf5a70da]69
70 return 0;
71}
Note: See TracBrowser for help on using the repository browser.