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行上でも良いので、後で書き換えよう。

透明度

うまく動いてそう。

差し替え後。

リリース

Lossless 画像データを bitmap 形式 PNG で差し替える際に、
画像データ部にゴミの値が混ざる不具合を修正しました。

ごめんなさい。ごめんなさい。ごめんなさい。

課題

swfdump を早く公開できるよう、ブラッシュアップを進めないと。
あと、画像一覧で PNG 画像が出てなかった気がするので、そちらも見直そう。