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  
      10  struct 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  
      20  int bar (void)
      21  {
      22    return 0;
      23  }
      24  
      25  int baz (void)
      26  {
      27    return 0;
      28  }
      29  
      30  int 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  }