0.10 release
不具合修正
ビットマップ画像にゴミが混ざる問題ですが、
old_buff = bitstream_buffer(bs2, 0); bitstream_close(bs2); old_size = bitstream_length(bs2); compsize = old_size; // too enough size tmp_buff = malloc(compsize); compress(tmp_buff, &compsize, old_buff, old_size);
bitstream_buffer は bitstream の中のデータを覗き見る関数なので、
このタイミングで close しちゃダメです。
(関数名が分かりにくいので再考しないと…)
bitstream_close(bs2) の時点で old_buff が開放されるので、
compress で old_buff を参照する前に、どこかで別の目的で使われたり、
参照できない領域になってたりと、非常にマズイ事態になってました。
さて、修正っと。
old_buff_ref = bitstream_buffer(bs2, 0); old_size = bitstream_length(bs2); compsize = old_size; // too enough size tmp_buff = malloc(compsize); compress(tmp_buff, &compsize, old_buff_ref, old_size); bitstream_putstring(bs, tmp_buff, compsize); bitstream_close(bs2);
bitstream_close(bs2) はあと1行上でも良いので、後で書き換えよう。
透明度
うまく動いてそう。
- http://diary.awm.jp/~yoya/data/2008/09/13/game.swf 元データ
- http://diary.awm.jp/~yoya/data/2008/09/13/kuriboo5.png 差し替え画像
差し替え後。
リリース
- http://sourceforge.jp/projects/swfed/files/ swfed-0.10 release
Lossless 画像データを bitmap 形式 PNG で差し替える際に、
画像データ部にゴミの値が混ざる不具合を修正しました。
ごめんなさい。ごめんなさい。ごめんなさい。
課題
swfdump を早く公開できるよう、ブラッシュアップを進めないと。
あと、画像一覧で PNG 画像が出てなかった気がするので、そちらも見直そう。