Skip to content

Commit 22cb33d

Browse files
committed
fix(csetjmp): 規格の解釈が不明な部分について規格の記述を追記
1 parent 0a97964 commit 22cb33d

2 files changed

Lines changed: 4 additions & 3 deletions

File tree

reference/csetjmp/longjmp.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -28,7 +28,7 @@ namespace std {
2828
## 備考
2929
3030
以下の場合、動作は未定義である。
31-
* 対応する`setjmp` と `longjmp` の間で、自動記憶域期間を持つ非トリビアルなデストラクタを持つオブジェクトの生存期間が開始し、終了しない場合(ジャンプによってデストラクタを飛ばす場合)
31+
* 対応する `setjmp` と `longjmp` を `catch` と `throw` に置き換えることで、自動記憶域期間を持つオブジェクト非トリビアルなデストラクタが呼び出される場合。例えば、`setjmp` と `longjmp` の間で、非トリビアルなデストラクタを持つオブジェクトの生存期間が開始し、終了しない場合(ジャンプによってデストラクタを飛ばす場合)
3232
* コルーチンのサスペンションコンテキスト内で呼び出された場合
3333
* 対応する`setjmp`が存在しない場合(`env`が有効な環境を保存していない場合)
3434
* `longjmp`は、対応する`setjmp`の呼び出しから同一スレッド内で呼び出されなければならない。異なるスレッドから呼び出された場合

reference/csetjmp/setjmp.md

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -31,8 +31,9 @@
3131
3232
## 備考
3333
34-
* 対応する`setjmp` と `longjmp` の間で、自動記憶域期間を持つ非トリビアルなデストラクタを持つオブジェクトの生存期間が開始し、終了しない場合(ジャンプによってデストラクタを飛ばす場合)、その動作は未定義である。
35-
* コルーチンのサスペンションコンテキスト内で呼び出された場合、動作は未定義である。
34+
以下の場合、動作は未定義である。
35+
* 対応する `setjmp` と `longjmp` を `catch` と `throw` に置き換えることで、自動記憶域期間を持つオブジェクト非トリビアルなデストラクタが呼び出される場合。例えば、`setjmp` と `longjmp` の間で、非トリビアルなデストラクタを持つオブジェクトの生存期間が開始し、終了しない場合(ジャンプによってデストラクタを飛ばす場合)
36+
* コルーチンのサスペンションコンテキスト内で呼び出された場合
3637
3738
また、`volatile`修飾子のついていない`setjmp`を呼び出した関数に対してローカルな変数で、その値が`setjmp`から`longjmp`の呼び出しの間で変更されたものがある場合、その変数の値は不定となる。
3839

0 commit comments

Comments
 (0)