バグ: 末尾が半角ドット2つであるカードを取得した場合に画像ファイル保存時にエラー

Issue #1101 resolved
tachi gigas created an issue

お疲れ様です。
今回は報告とお尋ねで誠に恐縮です。

伊礼様「流れついたもの」で技能カード「...See...」を入手後クリアすると以下のエラーログが出力されます。私家版ビルドのためビルド日時の不一致はご容赦ください。

Version : 5.1 (64-bit) / 2022-12-13 20:47:13
DateTime: 2023-09-23 22:20:06
Traceback (most recent call last):
File ".\cw\util.py", line 2257, in _write_files
FileNotFoundError: [Errno 2] No such file or directory: 'Data/Temp/Local/Yado/(宿名)/Yado/(宿名)/Material/SkillCard/...See.../...See....bmp.cardwirthpy_temp'

セーブしても本画像ファイルはディレクトリを含めて作成されていません。画像がないだけで使用に支障はないです。

そこで調査をしましたところ、表題に示した手順で再現する事を確認しました。

半角ドットで終わるカード名を内部で保存する際に末尾に適当な文字を追加するのはテストを要するにせよ(たぶん)簡単に実装できますが、
threads.pyの6044行目の前に書き加えるだけでOKかどうかですね)
これに考慮漏れがあるかご教示いただけましたら幸甚です。

末尾の半角ドットが1つの場合は正常動作を確認しましたが、

  • Windows上でのパスは「~~/ディレクトリ名/~~.bmp
  • xml上でのパスは「~~/ディレクトリ名./~~.bmp

となり相違していますが、動作に問題ありません。実際、コマンドプロンプトで「ディレクトリ名.」にcdをかましても「ディレクトリ名」に遷移します。

何なら「ディレクトリ名..」にcdかましても「ディレクトリ名」に遷移します。

軽くぐぐりましたが、Windowsの仕様による制約のため末尾が半角ドットのフォルダは操作できないとか。
https://blog.halpas.com/archives/15368

内容が乱雑で申し訳ございませんが、ご確認をお願いいたします。

Comments (6)

  1. k4nagatsuki repo owner

    ご報告ありがとうございます。.の扱いは問題ですね。Windowsのパスの仕様はもちろん、拡張子の付け替えでも不具合が発生する事が容易に想像できます。

    check_filename関数でパスに置くと問題の起こりそうな文字を置換しているのですが、ここに加えればおそらく解決できると思います。

    余裕がありましたらPull Requestしていただけるとありがたいです。

  2. tachi gigas reporter

    pull request #331

    やはり間違っていました。事前に尋ねてよかったです。

    久しぶりのpullreqですので間違えているかも知れませんが、よろしくお願いします。

  3. k4nagatsuki repo owner

    問題無いと思います。マージしました。

    助かりました。ありがとうございます。

  4. BlinkOpera

    @k4nagatsuki
    本件はイシュー発行者によるプルリクがマージされており、クローズ可能です。

  5. Log in to comment