特定の操作をするとセーブデータが消し飛ぶ

Issue #119 resolved
takuto_cw created an issue

大物バグの修正、お疲れ様です。その直後ですみませんが、別件バグの報告です。

内容が前回以上に危険なので、自分がのんびりやってる場合じゃないと思い、こちらに投下させていただきます。

内容は題の通り、再現手順は以下になります。

  1. デバッグモードにして新規キャラクターを作成。このときイメージを「変更しない」にして、顔画像なしのキャラクターにする。

  2. 「キャラクター情報」ダイアログを開き、編集 > デザインの編集 から顔画像を指定する。あるいは、デバッガの「キャラクターの情報の編集」ダイアログから顔画像を指定する。

  3. セーブすると宿データが飛ぶ

見つけたのは Issue #118 のテスト中(WinXP SP3 / Win7 SP1 64bit)ですが、コミットを巻き戻しても再現したので、昔からあったバグのようです。

こちらも見ていただいて宜しいでしょうか……? お手数をおかけしますが、よろしくお願いします。

Comments (4)

  1. k4nagatsuki repo owner

    これはまずいですね。キャラクター情報の一部が壊れるのでしょうか。XMLの書き出しで属性が文字列になっていない時などに壊れたデータになる事があるようですがその類かもしれません。

    急いで調査してみます。

  2. k4nagatsuki repo owner

    そうじゃないですね。宿データそのものが丸ごと消し飛びますね。なんてこった……。

    キャラクターの編集でカード画像を差し替えた際(Character#set_image())、元のカード画像をcw.cwpy.ydata.deletedpathsに登録します。これはセーブする際に削除するべきファイルのセットです。登録するファイルパスをcw.cwpy.yadodirと画像ファイルの相対パスを結合して生成しているのですが、カード画像の無いキャラクタの場合は画像ファイルのパスなど存在しないため、cw.cwpy.yadodirがそのままdeletepathsに登録されます。セーブの際に登録されたパスが削除され、宿が消し飛びます。

    set_image()を直すのはもちろんですが、削除処理自体にも安全のためにチェックを入れたほうがよさそうです。早急に作業します。

  3. takuto_cw reporter

    迅速な対応、ありがとうございます。

    修正を確認いたしました。お疲れ様です。

  4. Log in to comment