◀ANSI版開発トップへ
  • 5633 ディスクフルで保存するとファイルが壊れる
    • 5634 Re:ディスクフルで保存するとファイルが壊れる
  • [5633] ディスクフルで保存するとファイルが壊れる トーリス 2009年12月08日 00:08

    バグ報告
    ディスクフルの状態でファイルを更新して保存すると、何のエラーメッセージも無く一見保存できたかに見えますが、開いてみると内容が\0の羅列に置き換わっています。

    ちなみにメモ帳だと「ディスクフルです」とメッセージが表示され保存されないようになっています。

    Windows XP SP3です。
    • [5634] Re:ディスクフルで保存するとファイルが壊れる もか 2009年12月09日 23:57

      バグ報告ありがとうございます。
      エラーは受け取ってるのにメッセージを表示していないですね。

      事前に容量チェックをするにしても
      ほかのプロセスが並列で書き込んでいたら意味ないし、
      ネットワーク上やNTFSのマウントが使われていた場合はややこしいことになりそうです。
      クオーターもありますよね。

      ▼CDocLineMgr.cpp
      > catch(CError_FileOpen)
      > {
      > ::MYMESSAGEBOX(
      ...
      > ファイルを保存できません。\nパスが存在しないか
      ...
      > }
      > catch(CError_FileWrite)
      > {
      ここ。
      > nRetVal = FALSE;
      > }

      以下開発メモ的なことをついでに書いておきます。
      Unixだとこういう話もあります。
      (別名で書き込んで、renameするといい)
      http://slashdot.jp/comments.pl?sid=442678&cid=1530766
      ・これだとディスクの1/2以下しか書き込めない
      ・ちゃんとコードを書かないとアクセス権/ファイル属性がおかしくなる
      ・元のファイルを上書きできるかどうかは全内容をファイルに書き込んだ後に分かる
      ・TomcatやTortoiseSVNみたいな監視ソフトがいると一時ファイルの書き込みに反応して何かが動くことがある
      これは、ファイルの改名時にエラーになる原因になったりする。