64bit環境でバグ発生

| コメント
先日からx86_64環境に移行したのですが、それ以来Exifデータの解析結果が一部おかしくなっていました。
少し調べてみたところ、unpackを使って4byteのバイナリデータを符号付き整数として読み込む部分が、符号無し整数として扱われているようでした。

# Fedora Core 5(x86_64) rpmパッケージ版 ruby-1.8.4-3.2

$ /usr/bin/ruby -e 'p "\xff\xff\xff\xff".unpack("l")'
[4294967295]

試しにruby-1.8.4リリース版をソースからビルドしてみると、これもダメ。1.8.4の安定版スナップショットと1.9 CVS最新版スナップショットに関しては直っている事を確認しました。

# Fedora Core 5(x86_64) ruby-1.8.4 stable-snapshot

$ /usr/local/bin/ruby -e 'p "\xff\xff\xff\xff".unpack("l")'
[-1]

といった具合。
なるほど、いかにもintのサイズが32bitから64bitになったら起きそうなバグです。

そんなわけで、PhotoXPを64bit環境で動かしていて、露出補正値がマイナスの値の場合に表示がおかしくなるといった症状が発生している方は、 最新のrubyをビルドして使用するかlib/exifcodec/util.rb内のread_longに手を入れるなりしてみてください。

コメント

このブログ記事について

このページは、PhotoXPが2006年4月11日 23:10に書いたブログ記事です。

ひとつ前のブログ記事は「七人のデジタル侍」です。

次のブログ記事は「デジタル侍写真展」です。

最近のコンテンツはインデックスページで見られます。過去に書かれたものはアーカイブのページで見られます。

Powered by Movable Type 4.27-ja