source:
src/examples/gc_no_raii/test/badlll.c@
ae32d96
| Last change on this file since ae32d96 was 4c1403c, checked in by , 9 years ago | |
|---|---|
|
|
| File size: 957 bytes | |
| Rev | Line | |
|---|---|---|
| [9421588a] | 1 | #include "gc.h" |
| 2 | ||
| [46f1d20] | 3 | #include <stdio.h> |
| 4 | ||
| [9421588a] | 5 | struct List_t |
| 6 | { | |
| 7 | gcpointer(List_t) next; | |
| 8 | int val; | |
| 9 | }; | |
| [f1e42c1] | 10 | |
| 11 | typedef gcpointer(List_t) LLL; | |
| 12 | ||
| [76af36f] | 13 | #define MAX (1024 * 1) |
| [f1e42c1] | 14 | |
| [46f1d20] | 15 | LLL 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 | ||
| 42 | void 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 | ||
| 62 | int 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.