Hello community,

here is the log from the commit of package unrar for openSUSE:Factory:NonFree 
checked in at 2020-01-30 09:29:38
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old)
 and      /work/SRC/openSUSE:Factory:NonFree/.unrar.new.26092 (New)
++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Package is "unrar"

Thu Jan 30 09:29:38 2020 rev:86 rq:768255 version:5.9.1

Changes:
--------
--- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes      2019-12-13 
12:00:53.269481219 +0100
+++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new.26092/unrar.changes   
2020-01-30 09:29:39.733113187 +0100
@@ -1,0 +2,6 @@
+Wed Jan 29 09:34:48 UTC 2020 - Ismail Dönmez <idon...@suse.com>
+
+- Update to version 5.9.1
+  * Based on WinRAR version 5.90 beta1
+
+-------------------------------------------------------------------

Old:
----
  unrarsrc-5.8.5.tar.gz

New:
----
  unrarsrc-5.9.1.tar.gz

++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

Other differences:
------------------
++++++ unrar.spec ++++++
--- /var/tmp/diff_new_pack.F8QHMK/_old  2020-01-30 09:29:40.349113516 +0100
+++ /var/tmp/diff_new_pack.F8QHMK/_new  2020-01-30 09:29:40.349113516 +0100
@@ -18,10 +18,10 @@
 
 # majorversion should match the major version number.
 %define majorversion 5
-%define libsuffix 5_8_5
+%define libsuffix 5_9_1
 
 Name:           unrar
-Version:        5.8.5
+Version:        5.9.1
 Release:        0
 Summary:        A program to extract, test, and view RAR archives
 License:        NonFree

++++++ unrarsrc-5.8.5.tar.gz -> unrarsrc-5.9.1.tar.gz ++++++
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/arccmt.cpp new/unrar/arccmt.cpp
--- old/unrar/arccmt.cpp        2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/arccmt.cpp        2020-01-28 16:03:58.000000000 +0100
@@ -4,8 +4,15 @@
 {
   if (!MainComment)
     return false;
-  SaveFilePos SavePos(*this);
+  int64 SavePos=Tell();
+  bool Success=DoGetComment(CmtData);
+  Seek(SavePos,SEEK_SET);
+  return Success;
+}
 
+
+bool Archive::DoGetComment(Array<wchar> *CmtData)
+{
 #ifndef SFX_MODULE
   uint CmtLength;
   if (Format==RARFMT14)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/archive.cpp new/unrar/archive.cpp
--- old/unrar/archive.cpp       2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/archive.cpp       2020-01-28 16:03:58.000000000 +0100
@@ -208,8 +208,8 @@
       break;
   }
 
-  // This check allows to make RS based recovery even if password is incorrect.
-  // But we should not do it for EnableBroken or we'll get 'not RAR archive'
+  
+  // We should not do it for EnableBroken or we'll get 'not RAR archive'
   // messages when extracting encrypted archives with wrong password.
   if (FailedHeaderDecryption && !EnableBroken)
     return false;
@@ -233,7 +233,7 @@
   // immediately after IsArchive call.
   if (HeadersLeft && (!SilentOpen || !Encrypted))
   {
-    SaveFilePos SavePos(*this);
+    int64 SavePos=Tell();
     int64 SaveCurBlockPos=CurBlockPos,SaveNextBlockPos=NextBlockPos;
     HEADER_TYPE SaveCurHeaderType=CurHeaderType;
 
@@ -262,6 +262,7 @@
     CurBlockPos=SaveCurBlockPos;
     NextBlockPos=SaveNextBlockPos;
     CurHeaderType=SaveCurHeaderType;
+    Seek(SavePos,SEEK_SET);
   }
   if (!Volume || FirstVolume)
     wcsncpyz(FirstVolumeName,FileName,ASIZE(FirstVolumeName));
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/archive.hpp new/unrar/archive.hpp
--- old/unrar/archive.hpp       2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/archive.hpp       2020-01-28 16:03:58.000000000 +0100
@@ -37,6 +37,7 @@
     void UnexpEndArcMsg();
     void BrokenHeaderMsg();
     void UnkEncVerMsg(const wchar *Name,const wchar *Info);
+    bool DoGetComment(Array<wchar> *CmtData);
     bool ReadCommentData(Array<wchar> *CmtData);
 
 #if !defined(RAR_NOCRYPT)
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/arcread.cpp new/unrar/arcread.cpp
--- old/unrar/arcread.cpp       2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/arcread.cpp       2020-01-28 16:03:58.000000000 +0100
@@ -521,7 +521,6 @@
     {
       // Last 7 bytes of recovered volume can contain zeroes, because
       // REV files store its own information (volume number, etc.) here.
-      SaveFilePos SavePos(*this);
       int64 Length=Tell();
       Seek(Length-7,SEEK_SET);
       Recovered=true;
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/cmddata.cpp new/unrar/cmddata.cpp
--- old/unrar/cmddata.cpp       2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/cmddata.cpp       2020-01-28 16:03:58.000000000 +0100
@@ -953,7 +953,6 @@
     case 'X':
     case 'E':
     case 'T':
-    case 'I':
       {
         CmdExtract Extract(this);
         Extract.DoExtract();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc
--- old/unrar/dll.rc    2019-12-05 08:36:19.000000000 +0100
+++ new/unrar/dll.rc    2020-01-28 16:01:01.000000000 +0100
@@ -2,8 +2,8 @@
 #include <commctrl.h>
 
 VS_VERSION_INFO VERSIONINFO
-FILEVERSION 5, 80, 100, 3266
-PRODUCTVERSION 5, 80, 100, 3266
+FILEVERSION 5, 90, 1, 3321
+PRODUCTVERSION 5, 90, 1, 3321
 FILEOS VOS__WINDOWS32
 FILETYPE VFT_APP
 {
@@ -14,9 +14,9 @@
       VALUE "CompanyName", "Alexander Roshal\0"
       VALUE "ProductName", "RAR decompression library\0"
       VALUE "FileDescription", "RAR decompression library\0"
-      VALUE "FileVersion", "5.80.0\0"
-      VALUE "ProductVersion", "5.80.0\0"
-      VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2019\0"
+      VALUE "FileVersion", "5.90.1\0"
+      VALUE "ProductVersion", "5.90.1\0"
+      VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2020\0"
       VALUE "OriginalFilename", "Unrar.dll\0"
     }
   }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/errhnd.cpp new/unrar/errhnd.cpp
--- old/unrar/errhnd.cpp        2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/errhnd.cpp        2020-01-28 16:03:58.000000000 +0100
@@ -158,6 +158,7 @@
 
 void ErrorHandler::OpenErrorMsg(const wchar *ArcName,const wchar *FileName)
 {
+  Wait(); // Keep GUI responsive if many files cannot be opened when archiving.
   uiMsg(UIERROR_FILEOPEN,ArcName,FileName);
   SysErrMsg();
   SetErrorCode(RARX_OPEN);
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/extract.cpp new/unrar/extract.cpp
--- old/unrar/extract.cpp       2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/extract.cpp       2020-01-28 16:03:58.000000000 +0100
@@ -40,6 +40,8 @@
   {
     if (Cmd->ManualPassword)
       Cmd->Password.Clean(); // Clean user entered password before processing 
next archive.
+  
+    ReconstructDone=false; // Must be reset here, not in ExtractArchiveInit().
     while (true)
     {
       EXTRACT_ARC_CODE Code=ExtractArchive();
@@ -93,7 +95,6 @@
 
   PrevProcessed=false;
   AllMatchesExact=true;
-  ReconstructDone=false;
   AnySolidDataUnpackedWell=false;
 
   StartTime.SetCurrentTime();
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/file.cpp new/unrar/file.cpp
--- old/unrar/file.cpp  2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/file.cpp  2020-01-28 16:03:58.000000000 +0100
@@ -684,9 +684,11 @@
 
 int64 File::FileLength()
 {
-  SaveFilePos SavePos(*this);
+  int64 SavePos=Tell();
   Seek(0,SEEK_END);
-  return Tell();
+  int64 Length=Tell();
+  Seek(SavePos,SEEK_SET);
+  return Length;
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/filefn.cpp new/unrar/filefn.cpp
--- old/unrar/filefn.cpp        2019-12-05 08:39:19.000000000 +0100
+++ new/unrar/filefn.cpp        2020-01-28 16:03:58.000000000 +0100
@@ -360,7 +360,7 @@
 #if !defined(SFX_MODULE)
 void CalcFileSum(File *SrcFile,uint *CRC32,byte *Blake2,uint Threads,int64 
Size,uint Flags)
 {
-  SaveFilePos SavePos(*SrcFile);
+  int64 SavePos=SrcFile->Tell();
 #ifndef SILENT
   int64 FileLength=Size==INT64NDF ? SrcFile->FileLength() : Size;
 #endif
@@ -415,6 +415,8 @@
     if (Size!=INT64NDF)
       Size-=ReadSize;
   }
+  SrcFile->Seek(SavePos,SEEK_SET);
+
   if ((Flags & CALCFSUM_SHOWPERCENT)!=0)
     uiMsg(UIEVENT_FILESUMEND);
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/loclang.hpp new/unrar/loclang.hpp
--- old/unrar/loclang.hpp       2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/loclang.hpp       2020-01-28 16:03:59.000000000 +0100
@@ -379,3 +379,4 @@
 #define   MNeedAdmin         L"\nYou may need to run RAR as administrator"
 #define   MDictOutMem        L"\nNot enough memory for %d MB compression 
dictionary, changed to %d MB."
 #define   MUseSmalllerDict   L"\nPlease use a smaller compression dictionary."
+#define   MOpenErrAtime      L"\nYou may need to remove -tsp switch to open 
this file."
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/pathfn.cpp new/unrar/pathfn.cpp
--- old/unrar/pathfn.cpp        2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/pathfn.cpp        2020-01-28 16:03:59.000000000 +0100
@@ -170,8 +170,11 @@
 void AddEndSlash(wchar *Path,size_t MaxLength)
 {
   size_t Length=wcslen(Path);
-  if (Length>0 && Path[Length-1]!=CPATHDIVIDER)
-    wcsncatz(Path,SPATHDIVIDER,MaxLength);
+  if (Length>0 && Path[Length-1]!=CPATHDIVIDER && Length+1<MaxLength)
+  {
+    Path[Length]=CPATHDIVIDER;
+    Path[Length+1]=0;
+  }
 }
 
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/qopen.cpp new/unrar/qopen.cpp
--- old/unrar/qopen.cpp 2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/qopen.cpp 2020-01-28 16:03:59.000000000 +0100
@@ -67,7 +67,7 @@
     SeekPos=Arc->Tell();
     UnsyncSeekPos=false;
 
-    SaveFilePos SavePos(*Arc);
+    int64 SavePos=SeekPos;
     Arc->Seek(BlockPos,SEEK_SET);
 
     // If BlockPos points to original main header, we'll have the infinite
@@ -83,10 +83,14 @@
 
     if (ReadSize==0 || Arc->GetHeaderType()!=HEAD_SERVICE ||
         !Arc->SubHead.CmpName(SUBHEAD_TYPE_QOPEN))
+    {
+      Arc->Seek(SavePos,SEEK_SET);
       return;
+    }
     QOHeaderPos=Arc->CurBlockPos;
     RawDataStart=Arc->Tell();
     RawDataSize=Arc->SubHead.UnpSize;
+    Arc->Seek(SavePos,SEEK_SET);
 
     Loaded=true; // Set only after all file processing calls like Tell, Seek, 
ReadHeader.
   }
@@ -201,22 +205,28 @@
 
 uint QuickOpen::ReadBuffer()
 {
-  SaveFilePos SavePos(*Arc);
+  int ReadSize=0;
+  int64 SavePos=Arc->Tell();
   Arc->File::Seek(RawDataStart+RawDataPos,SEEK_SET);
   size_t SizeToRead=(size_t)Min(RawDataSize-RawDataPos,MaxBufSize-ReadBufSize);
   if (Arc->SubHead.Encrypted)
     SizeToRead &= ~CRYPT_BLOCK_MASK;
-  if (SizeToRead==0)
-    return 0;
-  int ReadSize=Arc->File::Read(Buf+ReadBufSize,SizeToRead);
-  if (ReadSize<=0)
-    return 0;
+  if (SizeToRead!=0)
+  {
+    int ReadSize=Arc->File::Read(Buf+ReadBufSize,SizeToRead);
+    if (ReadSize<=0)
+      ReadSize=0;
+    else
+    {
 #ifndef RAR_NOCRYPT
-  if (Arc->SubHead.Encrypted)
-    Crypt.DecryptBlock(Buf+ReadBufSize,ReadSize & ~CRYPT_BLOCK_MASK);
+      if (Arc->SubHead.Encrypted)
+        Crypt.DecryptBlock(Buf+ReadBufSize,ReadSize & ~CRYPT_BLOCK_MASK);
 #endif
-  RawDataPos+=ReadSize;
-  ReadBufSize+=ReadSize;
+      RawDataPos+=ReadSize;
+      ReadBufSize+=ReadSize;
+    }
+  }
+  Arc->Seek(SavePos,SEEK_SET);
   return ReadSize;
 }
 
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/rar.hpp new/unrar/rar.hpp
--- old/unrar/rar.hpp   2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/rar.hpp   2020-01-28 16:03:59.000000000 +0100
@@ -39,7 +39,6 @@
 #include "filestr.hpp"
 #include "find.hpp"
 #include "scantree.hpp"
-#include "savepos.hpp"
 #include "getbits.hpp"
 #include "rdwrfn.hpp"
 #ifdef USE_QOPEN
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/rartypes.hpp new/unrar/rartypes.hpp
--- old/unrar/rartypes.hpp      2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/rartypes.hpp      2020-01-28 16:03:59.000000000 +0100
@@ -21,15 +21,12 @@
 // Maximum int64 value.
 #define MAX_INT64 int64(INT32TO64(0x7fffffff,0xffffffff))
 
-// Special int64 value, large enough to never be found in real life.
+// Special int64 value, large enough to never be found in real life
+// and small enough to fit to both signed and unsigned 64-bit ints.
 // We use it in situations, when we need to indicate that parameter 
 // is not defined and probably should be calculated inside of function.
 // Lower part is intentionally 0x7fffffff, not 0xffffffff, to make it 
-// compatible with 32 bit int64.
+// compatible with 32 bit int64 if 64 bit type is not supported.
 #define INT64NDF INT32TO64(0x7fffffff,0x7fffffff)
 
-// Maximum uint64 value.
-#define MAX_UINT64 INT32TO64(0xffffffff,0xffffffff)
-#define UINT64NDF MAX_UINT64
-
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/resource.cpp new/unrar/resource.cpp
--- old/unrar/resource.cpp      2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/resource.cpp      2020-01-28 16:03:59.000000000 +0100
@@ -2,8 +2,10 @@
 
 
 
+
+
 #ifndef RARDLL
-const wchar *St(MSGID StringId)
+const wchar* St(MSGID StringId)
 {
   return StringId;
 }
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/threadpool.cpp new/unrar/threadpool.cpp
--- old/unrar/threadpool.cpp    2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/threadpool.cpp    2020-01-28 16:04:00.000000000 +0100
@@ -170,12 +170,13 @@
     CreateThreads();
   
   // If queue is full, wait until it is empty.
-  if ((QueueTop + 1) % ASIZE(TaskQueue) == QueueBottom)
+  if (ActiveThreads>=ASIZE(TaskQueue))
     WaitDone();
 
   TaskQueue[QueueTop].Proc = Proc;
   TaskQueue[QueueTop].Param = Data;
   QueueTop = (QueueTop + 1) % ASIZE(TaskQueue);
+  ActiveThreads++;
 }
 
 
@@ -184,9 +185,6 @@
 // are sleeping yet.
 void ThreadPool::WaitDone()
 {
-  // We add ASIZE(TaskQueue) for case if TaskQueue array size is not
-  // a power of two. Negative numbers would not suit our purpose here.
-  ActiveThreads=(QueueTop+ASIZE(TaskQueue)-QueueBottom) % ASIZE(TaskQueue);
   if (ActiveThreads==0)
     return;
 #ifdef _WIN_ALL
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/threadpool.hpp new/unrar/threadpool.hpp
--- old/unrar/threadpool.hpp    2019-12-05 08:39:20.000000000 +0100
+++ new/unrar/threadpool.hpp    2020-01-28 16:04:00.000000000 +0100
@@ -4,7 +4,10 @@
 #ifndef RAR_SMP
 const uint MaxPoolThreads=1; // For single threaded version.
 #else
-const uint MaxPoolThreads=32;
+// We need to use the processor groups API to increase it beyond 64.
+// Also be sure to check and adjust if needed per thread and total block size
+// when compressing if going above 64.
+const uint MaxPoolThreads=64;
 
 
 #ifdef _UNIX
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/ui.hpp new/unrar/ui.hpp
--- old/unrar/ui.hpp    2019-12-05 08:39:21.000000000 +0100
+++ new/unrar/ui.hpp    2020-01-28 16:04:00.000000000 +0100
@@ -38,6 +38,7 @@
   UIERROR_PATHTOOLONG, UIERROR_DIRSCAN, UIERROR_UOWNERGET,
   UIERROR_UOWNERBROKEN, UIERROR_UOWNERGETOWNERID, UIERROR_UOWNERGETGROUPID,
   UIERROR_UOWNERSET, UIERROR_ULINKREAD, UIERROR_ULINKEXIST,
+  UIERROR_OPENPRESERVEATIME,
 
   UIMSG_FIRST,
   UIMSG_STRING, UIMSG_BUILD, UIMSG_RRSEARCH, UIMSG_ANALYZEFILEDATA,
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/unicode.cpp new/unrar/unicode.cpp
--- old/unrar/unicode.cpp       2019-12-05 08:39:21.000000000 +0100
+++ new/unrar/unicode.cpp       2020-01-28 16:04:00.000000000 +0100
@@ -654,3 +654,5 @@
   return((char *)found);
 }
 #endif
+
+
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/unicode.hpp new/unrar/unicode.hpp
--- old/unrar/unicode.hpp       2019-12-05 08:39:21.000000000 +0100
+++ new/unrar/unicode.hpp       2020-01-28 16:04:00.000000000 +0100
@@ -63,4 +63,5 @@
 inline void copychrd(char *dest,const char *src) {*dest=*src;}
 #endif
 
+
 #endif
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/unpack.hpp new/unrar/unpack.hpp
--- old/unrar/unpack.hpp        2019-12-05 08:39:21.000000000 +0100
+++ new/unrar/unpack.hpp        2020-01-28 16:04:00.000000000 +0100
@@ -24,7 +24,7 @@
 #define MAX_FILTER_BLOCK_SIZE 0x400000
 
 // Write data in 4 MB or smaller blocks. Must not exceed PACK_MAX_WRITE,
-// so we keep number of buffered filter in unpacker reasonable.
+// so we keep a number of buffered filters in unpacker reasonable.
 #define UNPACK_MAX_WRITE      0x400000
 
 // Decode compressed bit fields to alphabet numbers.
diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' 
'--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp
--- old/unrar/version.hpp       2019-12-05 08:39:21.000000000 +0100
+++ new/unrar/version.hpp       2020-01-28 16:04:00.000000000 +0100
@@ -1,6 +1,6 @@
 #define RARVER_MAJOR     5
-#define RARVER_MINOR    80
-#define RARVER_BETA      0
-#define RARVER_DAY       5
-#define RARVER_MONTH    12
-#define RARVER_YEAR   2019
+#define RARVER_MINOR    90
+#define RARVER_BETA      1
+#define RARVER_DAY      28
+#define RARVER_MONTH     1
+#define RARVER_YEAR   2020


Reply via email to