バグ: データ編集時にキャストカードを破壊してしまうことがある

Issue #87 resolved
Liar_cw NA created an issue

正月三が日はお休みということで、バグ・不具合報告を控えるつもりでしたが……。 残念な事に極めて重大なバグを発見しました。

おそらく、原因はfbcc80b(精神傾向値の計算の修正)の変更によるものと思われますが、 キャストカード編集時に精神傾向値がマイナスだった場合、内部の値が異常な数値に置き換わりました。 編集ダイアログ上では全て-4に振り切っているため表示上は正常に見えてしまい、 XMLファイルを開かない限りはまず誰も気付かないものと思います。

  • クラシック形式のシナリオにて確認。(1.50)

シナリオをプレイした時の実害は次のとおりです。

  • CWPy:バグったキャストの行動時に高確率でフリーズする。技能、アイテムカード使用で確認。右上の×で閉じてもプロセスがゾンビ化。直接プロセスを閉じる必要があった。
  • CW1.50:フリーズはしないものの、バグったキャストを数体配置しても何体か行動しないことがあった。

以下は、異常が起きたキャストカードの精神傾向値です。

正常な値: <Mental aggressive="3" cautious="-2" cheerful="-4" brave="-3" trickish="3" />

異常な値: <Mental aggressive="3" cautious="4.29497e+09" cheerful="4.29497e+09" brave="4.29497e+09" trickish="3" />

Comments (7)

  1. Liar_cw NA reporter

    再現・確認方法ですが、groupASK製シナリオの「ゴブリンの洞窟」の場合、 「ホブゴブリン」の設定ダイアログを開いた後に すぐOKを押して閉じてください。

    次に開いたときに精神傾向(内向-2、臆病-2、正直-1)がすべて-4になっているはずです。

  2. k4nagatsuki repo owner

    これはまずいバグです。ご迷惑をお掛けして申し訳ありません。

    符号あり整数(マイナス値のある数値型)と符号無し整数(マイナス値がない)の取り回しの誤りが原因でした。符号あり値と符号無し値で計算を行うと自動的に符号無し値に変換されるのですが、その時にマイナスの値は超巨大な値に化けてしまうのです。

    修正してテスト版をアップロードしました。

  3. Liar_cw NA reporter
    cwxeditor_fnine_20160103b
    Build: 2016-01-03 17:49:52 Debug (32-bit)
    Compiled by Digital Mars D 2069
    

    上記の方法にて、修正を確認しました。精神傾向値に異常は見られませんでした。

    軽く焦っていたせいか、最初の報告の際のバージョン表記を忘れていました……。 異常が発生していたバージョンはcwxeditor_fnine_20160102.zipでした。

  4. k4nagatsuki repo owner

    ありがとうございました。久々にとんでもないバグを作ってしまった……つくづく申し訳ないです。

    では、これでクローズさせていただきます。

  5. Liar_cw NA reporter

    修正後のcwxeditorの挙動についての追加報告です。

    • バグ・不具合報告ではありません。ご安心ください。
    • この報告は、今回の問題が発生してしまい途方に暮れている方への アフターケアのような意味合いのものです。

    異常が起きた状態で保存してしまったキャストカードについては、 設定ダイアログを開いて編集を適用すること(OKを押すだけ)で 正常な状態へ戻すことができました。

    修正後のcwxeditorで読み込んでみたところ、 ロード直後は値が4.29497e+09から-2.14748e+09となり、 編集適用後は最終的に表示どおりの-4へと変化しました。

  6. k4nagatsuki repo owner

    ダイアログの設定を適用した時の処理が問題だったので、ロード・保存では発生せず、編集したキャストだけが問題になりますね。本当にご迷惑をお掛けしました。

  7. Log in to comment