PhotoXP: 2006年4月アーカイブ

先日から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に手を入れるなりしてみてください。

このアーカイブについて

このページには、2006年4月以降に書かれたブログ記事のうちPhotoXPカテゴリに属しているものが含まれています。

前のアーカイブはPhotoXP: 2006年3月です。

次のアーカイブはPhotoXP: 2006年12月です。

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

Powered by Movable Type 4.22-ja