[ruby-list:43075] YAMLライブラリのバグ?

From: Masatoshi Itagaki <masatoshi@...>
Date: 2006-12-25 12:54:45 UTC
List: ruby-list #43075
ANN以外で初めて投稿します。

Railsでデータベースを切り替える際に、YAMLへ退避する方法を試していて、日
本語のTextがうまくエンコードされないのでYAMLライブラリのソースを見ていま
したが、バイナリとしてエンコードするか否かの判定で、「統計的手法?」を採っ
ていると思われる部分で、おかしな点を発見しました。

浮動小数点を基準値として比較を行っているのですが、比較値の計算を整数のま
ま行っているため、決して真にはならない箇所がありました。

下記のように.to_fをつけるべきだと思いますが、いかがでしょうか?

--- c:\ruby-1.8.5-p2\lib\yaml\rubytypes.rb	Tue Jan 10 12:50:27 2006
+++ c:\ruby\lib\ruby\1.8\yaml\rubytypes.rb	Fri Dec 22 22:39:22 2006
@@ -143,7 +143,7 @@
         to_yaml_style or not to_yaml_properties.empty? or self =~ /\n.+/
     end
     def is_binary_data?
-        ( self.count( "^ -~", "^\r\n" ) / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty?
+        ( self.count( "^ -~", "^\r\n" ).to_f / self.size > 0.3 || self.count( "\x00" ) > 0 ) unless empty?
     end
     def String.yaml_new( klass, tag, val )
         val = val.unpack("m")[0] if tag == "tag:yaml.org,2002:binary"


-------------
いたさん
http://rails.to/


In This Thread

Prev Next