151: dwave系命令のバグ


最新状況

タイトル dwave系命令のバグ
状態 完了
カテゴリ バグ
作成日時 2009-10-16 14:48:31
最終更新日時 2010-01-16 21:42:07

履歴

1 | 2009-10-16 14:48:31 | 提案
nodaguti at csc.com
dwave系命令関連でバグをいくつか発見したので報告いたします。

1.dwaveloadとdwaveplayのどちらか一方のみをdefsubで上書きすると、ファイ
ルが正常に再生されない。(dwaveloadデフォルト/dwaveplay上書きなど)
dwaveplayの代わりにdwaveplayloopでも同様。

2.dwaveloop/dwaveplayloopをdefsubで上書きすると、ループ再生されなくな
る。

以下検証スクリプトです。

*define

defsub dwaveload
defsub dwaveplayloop
defsub dwaveplay
defsub dwaveloop

game

*dwaveload
	getparam %0,$0
	_dwaveload %0,$0
return

*dwaveplayloop
	getparam %1
	_dwaveplayloop %1
return

*dwaveplay
	getparam %2
	_dwaveplay %2
return

*dwaveloop
	getparam %3,$1
	_dwaveloop %3,$1
return


*start
	dwaveload 0,"001.wav"
	dwaveplayloop 0
	dwaveplayloopテスト\

	dwaveplay 0
	dwaveplayテスト\

	dwaveloop 1,"002.wav"
	dwaveloopテスト\
end

2 | 2009-10-21 18:16:09 | 提案
homepage_touroku at yahoo.co.jp
横から失礼致します。

これはbgm系でも発生するバグで、1つのコマンド関数(***Command)で複数の命令を処理し
ているものに発生します。

原因はONScripterLabel::parseLine( )内で、cmdポインタに命令名の入ったバッファのア
ドレス(string_buffer)を渡した後、行頭が"_"だった場合にcmdポインタ内のア
ドレスをずらしてるだけで、コマンド関数の呼び出し先でstring_bufferを直接isNameで評
価しているため、命令名が一致せずループフラグなどが立たない状態になっています。

1つの関数で複数の命令を処理しているものはいくつかあるので、コマンド関数を呼ぶ前に
string_bufferの中身を書き換えるのが楽な方法かもしれません。

3 | 2009-11-15 09:48:33 | 修正済
ogapee at aqua.dti2.ne.jp
バグ報告ありがとうございます。

補足してくださった方のおっしゃる通り、コマンド処理関数内で複数のコマンドを判別す
る際に、アンダーバー付きのコマンド名とアンダーバー無しのコマンド名を比較していた
ためうまくいっていませんでした。

ご指摘の通り、コマンド処理関数を呼ぶ前に string_buffer の中身を書きかえることで対
処しました。

20091115 以降で修正済みですのでご確認ください。

4 | 2010-01-16 20:17:59 | 修正済
nodaguti at csc.com
遅くなりまして申し訳ありません。
確認いたしました。
ご対応ありがとうございました。

5 | 2010-01-16 21:42:07 | 完了
ogapee at aqua.dti2.ne.jp
ご確認どうもありがとうございました。

本報告は完了とさせていただきます。

[リプライをつける]
Bug Tracking System 影舞 0.8.8
Powered by Ruby 1.8.7