(root)/
glibc-2.38/
setjmp/
jmpbug.c
       1  /* setjmp vs alloca test case.  Exercised bug on sparc.  */
       2  
       3  #include <stdio.h>
       4  #include <setjmp.h>
       5  #include <alloca.h>
       6  
       7  static void
       8  sub5 (jmp_buf buf)
       9  {
      10    longjmp (buf, 1);
      11  }
      12  
      13  static void
      14  test (int x)
      15  {
      16    jmp_buf buf;
      17    char *volatile foo;
      18    int arr[100];
      19  
      20    arr[77] = x;
      21    if (setjmp (buf))
      22      {
      23        printf ("made it ok; %d\n", arr[77]);
      24        return;
      25      }
      26  
      27    foo = (char *) alloca (128);
      28    (void) foo;
      29    sub5 (buf);
      30  }
      31  
      32  int
      33  main (void)
      34  {
      35    int i;
      36  
      37    for (i = 123; i < 345; ++i)
      38      test (i);
      39  
      40    return 0;
      41  }