こんにちは
高野です。

Darwinでx86_64のバイナリを作成し、テストをしていたらおかしな挙動がありま
した。
test_m17n_comb.rb で文字列のcryptをしているところです。

$ file ./ruby
./ruby: Mach-O 64-bit executable x86_64
$ ./ruby -v
ruby 1.9.1p5000 (2009-01-24 trunk 21752) [i386-darwin9.6.0]
$ ./ruby test/ruby/test_m17n_comb.rb
Loaded suite test/ruby/test_m17n_comb
Started
..........................F.................................................
Finished in 31.632222 seconds.

1) Failure:
test_str_crypt(TestM17NComb) [test/ruby/test_m17n_comb.rb:799]:
"".force_encoding("ASCII-8BIT").crypt("\u{80}".force_encoding("UTF-8")).
<"\xC2\x80sGOfrtmSfNA"> expected but was
<"\xC2\x804HfcgwtVA4.">.

76 tests, 257977 assertions, 1 failures, 0 errors, 0 skips


irbでいじるとa(salt)をした状態、つまりString#dupを使うと値が変化している
ようです。

irb(main):009:0>
"".force_encoding("ASCII-8BIT").crypt("\u{80}".force_encoding("ASCII-8BIT"))
=> "\xC2\x804HfcgwtVA4."
irb(main):010:0>
"".force_encoding("ASCII-8BIT").crypt("\u{80}".dup.force_encoding("ASCII-8BIT"))
=> "\xC2\x80sGOfrtmSfNA"

同ファイルのmodule AESUの中でString#dupしているので、それがなにか影響し
ているように思えました。
テストの入力と出力が把握できませんでしたので、こちらに投稿させていただき
ました。