142: 複数の条件が絡むif文の扱い


最新状況

タイトル 複数の条件が絡むif文の扱い
状態 完了
カテゴリ バグ
作成日時 2009-03-31 17:58:31
最終更新日時 2009-06-14 12:20:10

履歴

1 | 2009-03-31 17:58:31 | 提案
chris_s at infoseek.jp
標題の件について報告させていただきます。
先日報告した件とは別の内容・ソフトなためスレッドを改めましたが、同じス
レッドを利用した方が良いという事でしたら以降そうしますので仰ってくださ
ればと。

環境:
MacOSX 10.5.6 /ONScripter version 20090329

症状:
ゲーム「Limitless Bit 体験版」にて、季末評定の際に以下のエラーメッセー
ジを出力して終了する。
―――――――――――――――――――――――
**** Script error, dim[i] <= array.dim[i]. [] ***
―――――――――――――――――――――――

個人的な推測:
debug_level = 1でコンパイルしたバイナリでの出力を頼りに落ちる箇所を見て
みると、
―――――――――――――――――――――――――――
if (条件A) & (条件B) : ...
―――――――――――――――――――――――――――
という構造の文において(条件B)の判定の際に存在しない配列要素にアクセ
スして落ちているようです。このとき(条件A)は偽なのですが、本家ではど
うやら&で結ばれた複数の条件については記述順に判定していっていずれか
が偽の場合には以降の条件については判定自体を行わないという処理になって
いるらしく、そのために落ちないで動作している模様です。

以上の処理の違いは以下のスクリプトを本家とONSでそれぞれ実行すると確認で
きるかと思います。(本家では最後まで動作しますが、ONSだと上記と同様のエ
ラーを出力して落ちます。)

―――――――――――――――――――――――――――
*define
dim ?0[9]

game

*start
mov %0,1
if %0>1 && ?0[20]>10 表示文

これが表示されているとすると…@
end
―――――――――――――――――――――――――――

内容からするとONSの問題というよりスクリプト制作者側の記述ミスのような気
もするのですが、本家では一応動作するということで、ご一考をお願いしま
す。

2 | 2009-04-01 01:40:42 | 受付済
ogapee at aqua.dti2.ne.jp
詳細なバグ報告ありがとうございます。

今回のようにバグごとに報告を分けていただいた方が、管理しやすくありがた
いです。

また、今回のように問題が発生するサンプルスクリプトを添付していただける
と、原因の特定が非常に楽になるので大変助かります。

本バグですが、ご報告の通り if 文の条件式を評価する方法が間違っていまし
た。

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

3 | 2009-06-14 12:20:10 | 完了
ogapee at aqua.dti2.ne.jp
本報告は完了とさせていただきます。

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