OBONO’s Diary

へっぽこプログラマの戯言

バグ

会社にて。昨日から一生懸命解析しているバグ。画像を扱うクラスのデストラクタで、メモリをfreeする部分でsegmentation faultが起きているのは分かったんだけど、別に二重freeとかしているわけではなさそう。う〜ん、何なんだろう。
と、ここで前述のクラスと関連している、svgデータを描画するクラスをいろいろいじってみる、等倍で描画する場合では問題が発生しないが、割と微妙な倍率で縮小描画すると問題が発生することが判明。
なので、試しに、

scale = (int)(scale * 2048) / 2048.0;

という感じで、値が1/2048単位刻みになるよう丸め込んでみたら、問題が発生しなくなった。この計算と、freeする部分とでどんな因果関係があるんだ!? 何にせよ、問題が出なくなったので、この変更を適用したわけだが、こんな修正でいいのかな。