[#41778] [Bug #3515] FreeBSD wrongly raises ECONNRESET on close(2) — Yui NARUSE <redmine@...>

Bug #3515: FreeBSD wrongly raises ECONNRESET on close(2)

12 messages 2010/07/02

[ruby-dev:41794] [Bug #3529] BigDecimal.mode(BigDecimal::EXCEPTION_*) の初期値が0になっている

From: Kenta Murata <redmine@...>
Date: 2010-07-03 06:52:13 UTC
List: ruby-dev #41794
Bug #3529: BigDecimal.mode(BigDecimal::EXCEPTION_*) の初期値が0になっている
http://redmine.ruby-lang.org/issues/show/3529

起票者: Kenta Murata
ステータス: Open, 優先度: Normal
担当者: Kenta Murata, カテゴリ: ext, Target version: 1.9.x
ruby -v: ruby 1.9.3dev (2010-07-03 trunk 28532) [x86_64-darwin10.4.0]

BigDecimal.mode で設定可能な例外モードの値は true または false になっており、
これらの値以外を設定しようとするとエラーになります。
ところが、例外モードの初期値は 0 になっています。

$ ruby -rbigdecimal -ve 'p %w(NaN INFINITY UNDERFLOW ZERODIVIDE).map{|x| BigDecimal.mode(BigDecimal.const_get(:"EXCEPTION_#{x}")) }'
ruby 1.9.3dev (2010-07-03 trunk 28532) [x86_64-darwin10.4.0]
[0, 0, 0, 0]

このままでは以下のようなコードでエラーになる場合があるので、修正が必要です。

begin
  last_mode = BigDecimal.mode(BigDecimal::EXCEPTION_INFINITY)
  BigDecimal.mode(BigDecimal::EXCEPTION_INFINITY, false)
  ...
ensure
  # ここでエラーになる場合がある
  BigDecimal.mode(BigDecimal::EXCEPTION_INFINITY, last_mode)
end


----------------------------------------
http://redmine.ruby-lang.org

In This Thread

Prev Next