[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[FDclone-users:00983] Re: カスタマイザでセーブ時に malloc() エラー
- Subject: [FDclone-users:00983] Re: カスタマイザでセーブ時に malloc() エラー
- From: Takashi SHIRAI <shirai@unixusers.net>
- Date: Sat, 30 Jun 2012 18:15:50 +0900
しらいです。
In Message-Id <20120630.130309.353133235512808263.tatyana@miko.org>
Takanori Yamamoto <tatyana@miko.org>さんwrites:
> Customizer ('E') から結果を Save した際、コンソールに malloc() と表示され
> プログラムが強制終了してしまうことがあるようです。
この patch でどうでしょう?
---- Cut Here ----
diff -ur ../old/FD-3.00l/custom.c ./custom.c
--- ../old/FD-3.00l/custom.c Sat Jun 30 00:00:00 2012
+++ ./custom.c Sat Jun 30 17:26:11 2012
@@ -4004,11 +4004,10 @@
char *new;
int i, j, n;
- if (origflaglist) new = NULL;
+ if (origflaglist || origmaxfdtype <= 0) new = NULL;
else {
- for (n = 0; n < origmaxfdtype; n++) /*EMPTY*/;
- origflaglist = new = Xmalloc(n * sizeof(char));
- memset(origflaglist, 0, n * sizeof(char));
+ origflaglist = new = Xmalloc(origmaxfdtype * sizeof(char));
+ memset(origflaglist, 0, origmaxfdtype * sizeof(char));
}
for (i = n = 0; i < maxfdtype; i++) {
---- Cut Here ----
> dumpdosdrive から size=0 として Xmalloc が呼ばれています。
origmaxfdtype が 0 になる OS だとこの症状になりますね。殆
んどの OS については、dosdisk.c の drive letter を羅列してい
る箇所で某かの entry があるので 0 にはなりません。
例えば Darwin とか i386 環境以外の NetBSD とかだと、この配
列が空になって origmaxfdtype = 0 になります。大抵は FDD を登
録するんですが、Darwin だと USB-FDD しか無さそうですね。
手元にある検証環境の中ではレアケースだったので、今まで全然
気づいていませんでした。
dumpdosdrive() 以外の項目に関しては、既定値の設定が空にな
ることがない筈ですが、念の為に同様の措置をしておくことにしま
す。
> 気がつきませんでしたが FD 3.00k でも問題が生じるようです。
多分相当昔からじゃないでしょうか。2.05 辺りで既定値と設定
値の差分のみ出力するように手を加えたので、その頃に embug し
たんだと思います。
他にも bug が潜在していそうなので、3.01 の前にもう一回だけ
revision up した方がいいかも知れませんね。既に 3.01 の開発に
着手してるので、bug 報告はお早めにお願いします。
しらい たかし