27 11月

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.12.00.02公開

7-zip32.dll/7-zip64.dll/7z.dll文字化け対策版 Ver.15.12.00.02を公開しました。

○Ver.15.12.00.02 – 2015/11/27
・7z.dll対応版でARJ書庫の処理ができない不具合を修正。(Special Thanks!:Roelf Beukens様)
・SevenZipGetArchiveType()とSevenZipGetFileCount()について、ヘッダ暗号化書庫であればパスワード入力ダイアログを表示するように。(Special Thanks!:Roelf Beukens様)

ARJ書庫の処理ができない不具合について。
原因は「ArchiveExtractCallback.cpp」「MyOpenArchive.cpp」のメソッド取得部分にありました。
以下は「ArchiveExtractCallback.cpp」のコード。

RINOK(archive->GetProperty(index, kpidMethod, &prop));
LPCWSTR lpMethod = (prop.vt != VT_EMPTY) ? prop.bstrVal : L"";

オリジナルのように、zipや7zを処理するだけであれば全く問題がありません。
しかし、ARJ書庫くんはメソッドを文字列で返してくれないのです…
で、その後lpMethodを処理しようとして落ちると。

そこで、以下のように文字列に変換するようにしました。

RINOK(archive->GetProperty(index, kpidMethod, &prop));
UString s;
if (prop.vt != VT_EMPTY)
    ConvertPropertyToString(s,prop,kpidMethod);
LPCWSTR lpMethod = (!s.IsEmpty()) ? s.Ptr() : L"";
広告