2010年2月13日土曜日

内骨格 1.92 タイムスタンプがおかしくなる問題を修正

ファイルコピー時に、タイムスタンプがおかしくなる場合があるのを修正した。

SYSTEMTIME に時刻をセットして
SystemTimeToFileTime に渡す際、SYSTEMTIMEの wMilliseconds が
初期化されていなかった、という初歩的なミスだった。

Cの構造体は、とにかく memset しておけということだ。

9 件のコメント:

  1. はじめまして!
    いつも便利に使わせていただいてます。
    前から気になっている点があるのでご報告です。

    履歴ウィンドウにて、項目の削除×2回で以下のエラーがでます。

    Traceback (most recent call last):
    File "cfiler_listwindow.pyo", line 203, in onKeyDown
    File "cfiler_mainwindow.pyo", line 3855, in onKeyDown
    File "cfiler_mainwindow.pyo", line 124, in remove
    KeyError

    既に削除された項目を削除しようとしてる感じ?
    Ver.1.84以前では出てなかったと思います。

    修正していただけると嬉しいです!

    返信削除
  2. はじめまして。
    職場でも家でも活用させていただいています。

    最近、GMailDriveからzipファイルをコピーしようとすると
    以下のようなログを表示して、コピーを中断してしまいます。

    'ascii' codec can't decode byte 0xc2 in position 45: ordinal not in range(128)

    これは家でも職場でも同様でした。
    OS は Windows XP SP3、
    GMailDrive は 1.0.15です。

    対処方法があればご教示いただけますでしょうか。

    返信削除
  3. Kenichiさん、レポートありがとうございます。
    手元で修正しました。次回修正されると思います。

    返信削除
  4. takefumiさん、こんにちは。
    レポートありがとうございます。

    手元では再現していないので、
    以下の点を教えていただけますでしょうか?

    - ファイルが zip でない場合も発生するか?
    - ファイル名によって、起きたり起きなかったりするか?
    - GmailDriveの設定。(Preserve Filenames, Use Draft Folder, Use Secure HTTP, Use Proxy Authentication )

    返信削除
  5. 早速のレス、有難うございます。

    今朝、職場でアップデート後にファイルコピーを試すと、
    成功しました。

    ですので、
    (1) zipでないとき…試せませんでした。
    (2) ファイル名によってどうか…試せませんでした。
    ちなみに、cfiler はMy Documents 以下に設置。
    GMailDriveからのコピー先はいつもデスクトップで
    試しています。ここらへんに問題があるかも。
    (3) GMailDriveの設定… Preserve Filenames,
    Use Draft Folder, Use Secure HTTP にチェックが
    入っています。

    他のpythonで動いているアプリでもデスクトップのファイル
    を操作すると昨晩の投稿に記したものとよく似たログを
    吐いていることにも気がつきました。

    また、今朝のアップデートでは、次のようなログをはいていました。(これも最近ずっとです)

    アップデートイメージをダウンロード中:
    アップデートイメージを展開中:
    Traceback (most recent call last):
    File "cfiler_threadutil.pyo", line 173, in run
    File "cfiler_mainwindow.pyo", line 6962, in jobUpdate
    File "cfiler_mainwindow.pyo", line 6882, in extractUpdateImage
    File "zipfile.pyo", line 693, in __init__
    File "zipfile.pyo", line 713, in _GetContents
    File "zipfile.pyo", line 723, in _RealGetContents
    File "zipfile.pyo", line 225, in _EndRecData
    File "zipfile.pyo", line 149, in _EndRecData64
    error: unpack requires a string argument of length 20

    以上です。宜しくお願いします。

    返信削除
  6. さっそくの対応ありがとうございます!
    ついでなんですがもう一つ気になる点が、、^^;

    lzhファイル内の仮想ディレクトリからファイルのコピーを行おうとした場合、
    タイムスタンプの比較が正しく機能してない様子なんです。
    # 「新しければ上書き」をしてくれない

    zip、tgz形式で確認したところ正しく動作したので、これはアーカイバ側の問題なのでしょうか?

    内骨格 Ver.1.92
    UNLHA32.DLL Ver.2.65.4.4
    XP Pro. SP3

    返信削除
  7. > また、今朝のアップデートでは、
    > 次のようなログをはいていました。(これも最近ずっとです)

    アップデートの失敗についてですが、
    1.8x 以前の古いバージョンの内骨格には
    アップデートに失敗する問題がありました。
    それに該当してないでしょうか?
    内骨格のバージョンが1.92を手でインストール
    してみていただきたいと思います。

    また、また内骨格で問題が起きる場合には、
    内骨格をいったん全部終了させて、
    cfiler.ini のprint_errorinfo を
    下のように、1 に設定していただいて、

    [DEBUG]
    print_errorinfo = 1

    問題を起こしてみると、通常よりも、
    たくさんの問題解析用の情報が出る場合があります。
    それもいただけると解析の役に立ちます。

    返信削除
  8. > lzhファイル内の仮想ディレクトリからファイルのコピーを行おうとした場合、
    > タイムスタンプの比較が正しく機能してない様子なんです。

    問題が起きるのを確認しました。
    原因も分かりました。
    次回のアップデートまでに修正しようと思います。

    レポートをありがとうございました。

    返信削除
  9. 修正ありがとうございました!

    Ver.1.93にて、
    ・履歴ウィンドウからの削除
    ・仮想ディレクトリとのタイムスタンプ比較
    に関して正常動作を確認しました。

    ところで今後もなにか報告がある場合は、コメントの投稿という形でよろしいのでしょうか?
    別に手段があるようでしたら教えていただきたく。

    返信削除