From owner-man-jp-reviewer@jp.FreeBSD.org Sun Apr  7 13:33:10 2002
Received: (from daemon@localhost)
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) id g374XA593809;
	Sun, 7 Apr 2002 13:33:10 +0900 (JST)
	(envelope-from owner-man-jp-reviewer@jp.FreeBSD.org)
Received: from asahi-net.or.jp (p39-dna09urasirohat.saitama.ocn.ne.jp [210.190.196.39])
	by castle.jp.FreeBSD.org (8.11.6+3.4W/8.11.3) with ESMTP/inet id g374X9v93664
	for <man-jp-reviewer@jp.FreeBSD.org>; Sun, 7 Apr 2002 13:33:09 +0900 (JST)
	(envelope-from ht5t-fry@asahi-net.or.jp)
Received: from localhost (localhost.tf.or.jp [127.0.0.1])
	by galois.tf.or.jp (8.10.0/3.7W-Teddy-00032101) with ESMTP id g374TVl18642;
	Sun, 7 Apr 2002 13:29:31 +0900 (JST)
To: man-jp-reviewer@jp.FreeBSD.org
From: Tetsuro Teddy FURUYA
 (=?iso-2022-jp?B?GyRCOEVDKxsoQiAbJEJFL086GyhC?=) <ht5t-fry@asahi-net.or.jp>
In-Reply-To: Your message of "Sun, 07 Apr 2002 12:46:21 +0900"
	<20020407124621R.ht5t-fry@galois.tf.or.jp>
References: <20020407124621R.ht5t-fry@galois.tf.or.jp>
X-Mailer: Mew version 1.93 on Emacs 19.28 / Mule 2.3 (SUETSUMUHANA)
X-fingerprint: F1 BA 5F C1 C2 48 1D C7  AE 5F 16 ED 12 17 75 38
X-URL: http://www.asahi-net.or.jp/~ht5t-fry/
Mime-Version: 1.0
Content-Type: Multipart/Mixed;
	boundary="--Next_Part(Sun_Apr__7_13:28:54_2002_86)--"
Content-Transfer-Encoding: 7bit
Message-Id: <20020407132930V.ht5t-fry@galois.tf.or.jp>
Date: Sun, 07 Apr 2002 13:29:30 +0900
X-Dispatcher: imput version 980905(IM100)
Lines: 111
Reply-To: man-jp-reviewer@jp.FreeBSD.org
Precedence: list
X-Distribute: distribute version 2.1 (Alpha) patchlevel 24e+020405
X-Sequence: man-jp-reviewer 4046
Subject: [man-jp-reviewer 4046] Re: (man3) setjmp.3
Errors-To: owner-man-jp-reviewer@jp.FreeBSD.org
Sender: owner-man-jp-reviewer@jp.FreeBSD.org
X-Originator: ht5t-fry@asahi-net.or.jp

----Next_Part(Sun_Apr__7_13:28:54_2002_86)--
Content-Type: Text/Plain; charset=iso-2022-jp
Content-Transfer-Encoding: 7bit

$B8EC+(B $B$G$9!#(B

$BA0$NNc(B([man-jp-reviewer 4045] Re: (man3) setjmp.3)$B$G$O(B
$B$I$3$G!"(B longjmp $B$K$O$$$C$?$+!"$I$3$G(B usr2 $B$,2u$l$?$+$,(B
$BJ,$+$jFq$$$H;W$&$N$G!"$b$A$g$C$H(B verbose $B$JNc$r=P$7$^$9!#(B

$B<B9TNc$O!"(B

tfuruya@galois$ gcc -g -lc -o multi_setjmp2 multi_setjmp2.c
tfuruya@galois$ ./multi_setjmp 2
After _setjmp usr1: 3
After setjmp No.1 usr1: 3, usr2: 7, val1: 0, val2: 0
After _setjmp ret1: 1, usr1: 3
After setjmp No.3 usr1: 3, usr2: 5733, val1: 0, val2: 0
Here, longjmp
After setjmp No.2 usr1: 3, usr2: 5733, val1: 0, val2: 1
tfuruya@galois$

$B$G$9!#(B
---
Tetsuro Teddy FURUYA ($B8EC+(B $BE/O:(B) <ht5t-fry@asahi-net.or.jp>
===

----Next_Part(Sun_Apr__7_13:28:54_2002_86)--
Content-Type: Text/Plain; charset=iso-8859-1
Content-Transfer-Encoding: quoted-printable
Content-Disposition: attachment; filename=multi_setjmp2.c

/* Example 2 of the broken value of object
 * of automatic storage invocation duration in setjmp and longjmp call.
 *
 * The value of usr2 will be broken.
 *
 * Posted to <man-jp-reviewer@jp.FreeBSD.org>
 * by Tetsuro Furuya <ht5t-fry@asahi-net.or.jp>, April 7, 2002.
 *
 */

#include <stdio.h>
#include <setjmp.h>


int flg;
jmp_buf jbuf1;
int usr1;
int val1;
int ret1;
jmp_buf jbuf2;
int val2;

main()
{

  void pr_longjmp1();
  void pr_longjmp2();

  usr1 =3D 3;
  if((ret1=3D_setjmp(jbuf1)) =3D=3D 0) {
    flg =3D 1;
    printf("After _setjmp usr1: %d\n", usr1);
  }
  else {
    printf("After _setjmp ret1: %d, usr1: %d\n", ret1, usr1);
    if ( flg =3D=3D 2 ) {
      exit (0);
    }
    flg =3D 2;
  }

  pr_longjmp1();
}

pr_longjmp1()
{
  int val2;
  int ret2;
  int usr2;

  if((val2 =3D setjmp( jbuf2 )) =3D=3D 0) {
    if(flg =3D=3D 1) {
      usr2=3D7;
      printf("After setjmp No.1 usr1: %d, usr2: %d, val1: %d, val2: %d\n=
",
	     usr1, usr2, val1, val2);
      _longjmp(jbuf1, val1);
    }
  }
  else {
    printf("After setjmp No.2 usr1: %d, usr2: %d, val1: %d, val2: %d\n",=

	   usr1, usr2, val1, val2);
    return;
  }
  printf("After setjmp No.3 usr1: %d, usr2: %d, val1: %d, val2: %d\n",
	 usr1, usr2, val1, val2);

  pr_longjmp2();
}

pr_longjmp2()
{
  printf("Here, longjmp\n");
  longjmp(jbuf2, val2);
}


----Next_Part(Sun_Apr__7_13:28:54_2002_86)----
