extern void abort(void); | |
extern void exit(int); | |
int bar(void); | |
int baz(void); | |
struct foo { | |
struct foo *next; | |
}; | |
struct foo *test(struct foo *node) | |
{ | |
while (node) { | |
if (bar() && !baz()) | |
break; | |
node = node->next; | |
} | |
return node; | |
} | |
int bar (void) | |
{ | |
return 0; | |
} | |
int baz (void) | |
{ | |
return 0; | |
} | |
int main(void) | |
{ | |
struct foo a, b, *c; | |
a.next = &b; | |
b.next = (struct foo *)0; | |
c = test(&a); | |
if (c) | |
abort(); | |
exit (0); | |
} |