X-Git-Url: http://wien.tomnetworks.com/gitweb/?p=hs-boehmgc.git;a=blobdiff_plain;f=gc-7.2%2Ftests%2Fstaticrootstest.c;fp=gc-7.2%2Ftests%2Fstaticrootstest.c;h=222f2095c459d078fd6a2e6699f5a2ef26363640;hp=0000000000000000000000000000000000000000;hb=324587ba93dc77f37406d41fd2a20d0e0d94fb1d;hpb=2a4ea609491b225a1ceb06da70396e93916f137a diff --git a/gc-7.2/tests/staticrootstest.c b/gc-7.2/tests/staticrootstest.c new file mode 100644 index 0000000..222f209 --- /dev/null +++ b/gc-7.2/tests/staticrootstest.c @@ -0,0 +1,57 @@ + +#include +#include + +#ifndef GC_DEBUG +# define GC_DEBUG +#endif + +#include "gc.h" +#include "gc_backptr.h" + +struct treenode { + struct treenode *x; + struct treenode *y; +} * root[10]; + +static char *staticroot = 0; + +extern struct treenode * libsrl_mktree(int i); +extern void * libsrl_init(void); + +/* +struct treenode * mktree(int i) { + struct treenode * r = GC_MALLOC(sizeof(struct treenode)); + if (0 == i) return 0; + if (1 == i) r = GC_MALLOC_ATOMIC(sizeof(struct treenode)); + r -> x = mktree(i-1); + r -> y = mktree(i-1); + return r; +}*/ + +int main(void) +{ + int i; + /*GC_INIT(); + staticroot = GC_MALLOC(sizeof(struct treenode));*/ + staticroot = libsrl_init(); + memset(staticroot, 0x42, sizeof(struct treenode)); + GC_gcollect(); + for (i = 0; i < 10; ++i) { + root[i] = libsrl_mktree(12); + GC_gcollect(); + } + for (i = 0; i < (int)sizeof(struct treenode); ++i) { + if (staticroot[i] != 0x42) + return -1; + } + for (i = 0; i < 10; ++i) { + root[i] = libsrl_mktree(12); + GC_gcollect(); + } + for (i = 0; i < (int)sizeof(struct treenode); ++i) { + if (staticroot[i] != 0x42) + return -1; + } + return 0; +}