1extern void abort(void);
2extern void exit(int);
3int bar(void);
4int baz(void);
5
6struct foo {
7  struct foo *next;
8};
9
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
20int bar (void)
21{
22  return 0;
23}
24
25int baz (void)
26{
27  return 0;
28}
29
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