1 extern void abort(void); 2 extern void exit(int); 3 int bar(void); 4 int baz(void); 5 6 struct foo { 7 struct foo *next; 8 }; 9 test(struct foo * node)10struct foo *test(struct foo *node) 11 { 12 while (node) { 13 if (bar() && !baz()) 14 break; 15 node = node->next; 16 } 17 return node; 18 } 19 bar(void)20int bar (void) 21 { 22 return 0; 23 } 24 baz(void)25int baz (void) 26 { 27 return 0; 28 } 29 main(void)30int main(void) 31 { 32 struct foo a, b, *c; 33 34 a.next = &b; 35 b.next = (struct foo *)0; 36 c = test(&a); 37 if (c) 38 abort(); 39 exit (0); 40 } 41