Forráskód Böngészése

Passing an unknown extension is an internal error.

Martijn Laan 4 hónapja
szülő
commit
8a255efeab
1 módosított fájl, 3 hozzáadás és 2 törlés
  1. 3 2
      Projects/Src/Compression.SevenZipDllDecoder.pas

+ 3 - 2
Projects/Src/Compression.SevenZipDllDecoder.pas

@@ -418,7 +418,7 @@ procedure ExtractArchiveRedir(const DisableFsRedir: Boolean;
     else if SameText(Ext, '.deb') then
       Result := CLSID_HandlerDeb
     else
-      raise Exception.Create('Unknown extension');
+      InternalError('ExtractArchive: Unknown ArchiveFileName extension');
   end;
 
 begin
@@ -426,6 +426,7 @@ begin
     InternalError('ExtractArchive: 7z(xa).dll not loaded');
   if ArchiveFileName = '' then
     InternalError('ExtractArchive: Invalid ArchiveFileName value');
+  const clsid = GetHandler(PathExtractExt(ArchiveFilename));
   if DestDir = '' then
     InternalError('ExtractArchive: Invalid DestDir value');
 
@@ -433,7 +434,7 @@ begin
 
   { CreateObject }
   var InArchive: IInArchive;
-  if CreateSevenZipObject(GetHandler(PathExtractExt(ArchiveFilename)), IInArchive, InArchive) <> S_OK then
+  if CreateSevenZipObject(clsid, IInArchive, InArchive) <> S_OK then
     raise Exception.Create(FmtSetupMessage(msgErrorExtractionFailed, ['Cannot get class object'])); { From Client7z.cpp }
 
   { Open }