OSDN Git Service

書庫の圧縮後サイズや圧縮率の取得に失敗した場合にエラー処理を行うよう変更。
authorsirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 15 Sep 2011 11:01:51 +0000 (11:01 +0000)
committersirakaba <sirakaba@9df91469-1e22-0410-86e7-ea8537beb833>
Thu, 15 Sep 2011 11:01:51 +0000 (11:01 +0000)
git-svn-id: svn+ssh://svn.sourceforge.jp/svnroot/tpi/tpi@562 9df91469-1e22-0410-86e7-ea8537beb833

doc/history.html
src/plugin/calLibrary/calLibrary.cpp

index 57dd124..3047db6 100644 (file)
        <li class="fix">対応拡張子を判別する際、大文字小文字を区別して判別していたのを修正。</li>\r
       </ul>\r
      </dd>\r
+     <dt>calLibrary</dt>\r
+     <dd>\r
+      <ul>\r
+       <li class="chg">書庫の圧縮後サイズや圧縮率の取得に失敗した場合にエラー処理を行うよう変更。</li>\r
+      </ul>\r
+     </dd>\r
     </dl>\r
    </dd>\r
    <dt id="0.01beta12">2011/04/16</dt>\r
index 0dde981..4889b6d 100644 (file)
@@ -870,6 +870,11 @@ int __stdcall GetArchiveInformation
        MySetArcSize(GetArcOriginalSize,   nUnpackedSize);\r
        MySetArcSize(GetArcCompressedSize, nPackedSize);\r
        MySetArcSize(GetArcReadSize,       nReadSize);\r
+       if (_aiInfo->nPackedSize == (DWORD) -1)\r
+       {\r
+               // 圧縮後サイズの取得に対応していない場合、書庫のサイズで代替。\r
+               _aiInfo->nPackedSize = _aiInfo->nFileSize;\r
+       }\r
 \r
        FILETIME ft;\r
        MySetArcTime(GetArcAccessTime, tmAccess, false);\r
@@ -880,6 +885,11 @@ int __stdcall GetArchiveInformation
        if (fpProc != NULL)\r
        {\r
                _aiInfo->wCompressRatio = ((WORD (__stdcall *)(void *)) fpProc)(_hArchive);\r
+               if (_aiInfo->wCompressRatio == (WORD) -1)\r
+               {\r
+                       // エラーなら0にしておく。\r
+                       _aiInfo->wCompressRatio = 0;\r
+               }\r
        }\r
 \r
        fpProc = ::GetAPIAddress("GetArcOSType", false);\r