anchor.diff:      FErrors          : CabErrorRecord;
       FFileHandle      : Integer;
       FItemInProgress  : TAbCabItem;
  +    FIIPName         : string;
       FItemProgress    : DWord;
       FNextCabinet     : string;
       FNextDisk        : string;
  
positive.code:   {extract a file from the cabinet}
  begin
    FItemInProgress := GetItem(Index);
    if not FDICopy(FFDIContext, FCabName, FCabPath, 0, @FDI_ExtractFiles,
                   nil, Self) then
      DoProcessItemFailure(FItemInProgress, ptExtract, ecCabError, 0);
  end;
  {----------------------------------------------------------------------------}
  procedure TAbCabArchive.ExtractItemToStreamAt(Index : Integer; OutStream : TStream);
  
negative.code:       begin
          NewFilename := StrPas(pfdin^.psz1);
          if (NewFilename = Archive.FItemInProgress.FileName) then begin
            if Archive.FIIPName <> '' then
              NewFilename := Archive.FIIPName
            else begin
              if not (eoRestorePath in Archive.ExtractOptions) then
                NewFilename := ExtractFileName(NewFileName);
              if (Archive.BaseDirectory <> '') then
                NewFilename := Archive.BaseDirectory + '\' + NewFilename;
            end;
            NewFilePath := ExtractFilePath(NewFilename);
            if (Length(NewFilePath) > 0 ) and
              (NewFilePath[Length(NewFilePath)] = '\') then
  