Hello community, here is the log from the commit of package unrar for openSUSE:Factory:NonFree checked in at 2019-04-08 10:40:26 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory:NonFree/unrar (Old) and /work/SRC/openSUSE:Factory:NonFree/.unrar.new.3908 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "unrar" Mon Apr 8 10:40:26 2019 rev:79 rq:692078 version:5.7.4 Changes: -------- --- /work/SRC/openSUSE:Factory:NonFree/unrar/unrar.changes 2019-03-11 11:18:11.569279380 +0100 +++ /work/SRC/openSUSE:Factory:NonFree/.unrar.new.3908/unrar.changes 2019-04-08 10:40:54.787303855 +0200 @@ -1,0 +2,6 @@ +Sun Apr 07 03:31:11 UTC 2019 - sean...@opensuse.org + +- Update to version 5.7.4 + * No upstream changelog + +------------------------------------------------------------------- Old: ---- unrarsrc-5.7.3.tar.gz New: ---- unrarsrc-5.7.4.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ unrar.spec ++++++ --- /var/tmp/diff_new_pack.tRRUGg/_old 2019-04-08 10:40:55.483304025 +0200 +++ /var/tmp/diff_new_pack.tRRUGg/_new 2019-04-08 10:40:55.499304029 +0200 @@ -18,10 +18,10 @@ # majorversion should match the major version number. %define majorversion 5 -%define libsuffix 5_7_3 +%define libsuffix 5_7_4 Name: unrar -Version: 5.7.3 +Version: 5.7.4 Release: 0 Summary: A program to extract, test, and view RAR archives License: NonFree ++++++ unrarsrc-5.7.3.tar.gz -> unrarsrc-5.7.4.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/cmdfilter.cpp new/unrar/cmdfilter.cpp --- old/unrar/cmdfilter.cpp 2019-02-24 20:07:17.000000000 +0100 +++ new/unrar/cmdfilter.cpp 2019-04-02 10:05:15.000000000 +0200 @@ -128,16 +128,22 @@ { bool ModeOR=false,TimeMods=false; const wchar *S=Mod; - for (;wcschr(L"MCAOmcao",*S)!=NULL;S++) + // Check if any 'mca' modifiers are present, set OR mode if 'o' is present, + // skip modifiers and set S to beginning of time string. Be sure to check + // *S!=0, because termination 0 is a part of string for wcschr. + for (;*S!=0 && wcschr(L"MCAOmcao",*S)!=NULL;S++) if (*S=='o' || *S=='O') ModeOR=true; else TimeMods=true; - if (!TimeMods) + if (!TimeMods) // Assume 'm' if no modifiers are specified. Mod=L"m"; - for (;wcschr(L"MCAOmcao",*Mod)!=NULL;Mod++) + // Set the specified time for every modifier. Be sure to check *Mod!=0, + // because termination 0 is a part of string for wcschr. This check is + // important when we set Mod to "m" above. + for (;*Mod!=0 && wcschr(L"MCAOmcao",*Mod)!=NULL;Mod++) switch(toupperw(*Mod)) { case 'M': diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/dll.rc new/unrar/dll.rc --- old/unrar/dll.rc 2019-02-24 20:02:22.000000000 +0100 +++ new/unrar/dll.rc 2019-04-02 09:21:53.000000000 +0200 @@ -2,8 +2,8 @@ #include <commctrl.h> VS_VERSION_INFO VERSIONINFO -FILEVERSION 5, 70, 100, 2983 -PRODUCTVERSION 5, 70, 100, 2983 +FILEVERSION 5, 71, 1, 3019 +PRODUCTVERSION 5, 71, 1, 3019 FILEOS VOS__WINDOWS32 FILETYPE VFT_APP { @@ -14,8 +14,8 @@ VALUE "CompanyName", "Alexander Roshal\0" VALUE "ProductName", "RAR decompression library\0" VALUE "FileDescription", "RAR decompression library\0" - VALUE "FileVersion", "5.70.0\0" - VALUE "ProductVersion", "5.70.0\0" + VALUE "FileVersion", "5.71.1\0" + VALUE "ProductVersion", "5.71.1\0" VALUE "LegalCopyright", "Copyright � Alexander Roshal 1993-2019\0" VALUE "OriginalFilename", "Unrar.dll\0" } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/extract.cpp new/unrar/extract.cpp --- old/unrar/extract.cpp 2019-02-24 20:07:19.000000000 +0100 +++ new/unrar/extract.cpp 2019-04-02 10:05:16.000000000 +0200 @@ -614,10 +614,14 @@ } #endif - if (!TestMode && !Arc.BrokenHeader && - (Arc.FileHead.PackSize<<11)>Arc.FileHead.UnpSize && + uint64 Preallocated=0; + if (!TestMode && !Arc.BrokenHeader && Arc.FileHead.UnpSize>1000000 && + Arc.FileHead.PackSize*1024>Arc.FileHead.UnpSize && (Arc.FileHead.UnpSize<100000000 || Arc.FileLength()>Arc.FileHead.PackSize)) + { CurFile.Prealloc(Arc.FileHead.UnpSize); + Preallocated=Arc.FileHead.UnpSize; + } CurFile.SetAllowDelete(!Cmd->KeepBroken); @@ -734,8 +738,9 @@ (!LinkEntry || Arc.FileHead.RedirType==FSREDIR_FILECOPY && LinkSuccess) && (!BrokenFile || Cmd->KeepBroken)) { - // We could preallocate more space that really written to broken file. - if (BrokenFile) + // We could preallocate more space that really written to broken file + // or file with crafted header. + if (Preallocated>0 && (BrokenFile || DataIO.CurUnpWrite!=Preallocated)) CurFile.Truncate(); #if defined(_WIN_ALL) || defined(_EMX) @@ -969,7 +974,11 @@ if (!uiGetPassword(UIPASSWORD_FILE,ArcFileName,&Cmd->Password)/* || !Cmd->Password.IsSet()*/) { // Suppress "test is ok" message if user cancelled the password prompt. - uiMsg(UIERROR_INCERRCOUNT); +// 2019.03.23: If some archives are tested ok and prompt is cancelled for others, +// do we really need to suppress "test is ok"? Also if we set an empty password +// and "Use for all archives" in WinRAR Ctrl+P and skip some encrypted archives. +// We commented out this UIERROR_INCERRCOUNT for now. +// uiMsg(UIERROR_INCERRCOUNT); return false; } Cmd->ManualPassword=true; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/list.cpp new/unrar/list.cpp --- old/unrar/list.cpp 2019-02-24 20:07:20.000000000 +0100 +++ new/unrar/list.cpp 2019-04-02 10:05:18.000000000 +0200 @@ -71,6 +71,7 @@ *VolNumText=0; while(Arc.ReadHeader()>0) { + Wait(); // Allow quit listing with Ctrl+C. HEADER_TYPE HeaderType=Arc.GetHeaderType(); if (HeaderType==HEAD_ENDARC) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/loclang.hpp new/unrar/loclang.hpp --- old/unrar/loclang.hpp 2019-02-24 20:07:20.000000000 +0100 +++ new/unrar/loclang.hpp 2019-04-02 10:05:18.000000000 +0200 @@ -85,7 +85,7 @@ #define MCHelpSwILOG L"\n ilog[name] Log errors to file" #define MCHelpSwINUL L"\n inul Disable all messages" #define MCHelpSwIOFF L"\n ioff[n] Turn PC off after completing an operation" -#define MCHelpSwISND L"\n isnd Control notification sounds" +#define MCHelpSwISND L"\n isnd[-] Control notification sounds" #define MCHelpSwIVER L"\n iver Display the version number" #define MCHelpSwK L"\n k Lock archive" #define MCHelpSwKB L"\n kb Keep broken extracted files" diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/threadmisc.cpp new/unrar/threadmisc.cpp --- old/unrar/threadmisc.cpp 2019-02-24 20:07:23.000000000 +0100 +++ new/unrar/threadmisc.cpp 2019-04-02 10:05:21.000000000 +0200 @@ -53,25 +53,22 @@ ThreadPool* CreateThreadPool() { +#ifdef RARDLL + // We use a simple thread pool, which does not allow to add tasks from + // different functions and threads in the same time. It is ok for RAR, + // but UnRAR.dll can be used in multithreaded environment. So we return + // a new pool for UnRAR.dll every time. + return new ThreadPool(MaxPoolThreads); +#else + // Reuse the existing pool for RAR. CriticalSectionStart(&PoolCreateSync.CritSection); - + if (GlobalPoolUseCount++ == 0) GlobalPool=new ThreadPool(MaxPoolThreads); - // We use a simple thread pool, which does not allow to add tasks from - // different functions and threads in the same time. It is ok for RAR, - // but UnRAR.dll can be used in multithreaded environment. So if one of - // threads requests a copy of global pool and another copy is already - // in use, we create and return a new pool instead of existing global. - if (GlobalPoolUseCount > 1) - { - ThreadPool *Pool = new ThreadPool(MaxPoolThreads); - CriticalSectionEnd(&PoolCreateSync.CritSection); - return Pool; - } - CriticalSectionEnd(&PoolCreateSync.CritSection); return GlobalPool; +#endif } @@ -79,17 +76,16 @@ { if (Pool!=NULL) { +#ifdef RARDLL + delete Pool; +#else CriticalSectionStart(&PoolCreateSync.CritSection); if (Pool==GlobalPool && GlobalPoolUseCount > 0 && --GlobalPoolUseCount == 0) delete GlobalPool; - // To correctly work in multithreaded environment UnRAR.dll creates - // new pools if global pool is already in use. We delete such pools here. - if (Pool!=GlobalPool) - delete Pool; - CriticalSectionEnd(&PoolCreateSync.CritSection); +#endif } } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/unrar/version.hpp new/unrar/version.hpp --- old/unrar/version.hpp 2019-02-24 20:07:24.000000000 +0100 +++ new/unrar/version.hpp 2019-04-02 10:05:22.000000000 +0200 @@ -1,6 +1,6 @@ #define RARVER_MAJOR 5 -#define RARVER_MINOR 70 -#define RARVER_BETA 0 -#define RARVER_DAY 25 -#define RARVER_MONTH 2 +#define RARVER_MINOR 71 +#define RARVER_BETA 1 +#define RARVER_DAY 2 +#define RARVER_MONTH 4 #define RARVER_YEAR 2019