[Libreoffice-commits] core.git: unotools/source

Stephan Bergmann sbergman at redhat.com
Fri May 16 02:08:36 PDT 2014


 unotools/source/ucbhelper/tempfile.cxx |   21 +++++++++++----------
 1 file changed, 11 insertions(+), 10 deletions(-)

New commits:
commit 0bc869459b8dfc05923249ec07ccfd4f0ddd2c2c
Author: Stephan Bergmann <sbergman at redhat.com>
Date:   Fri May 16 11:05:41 2014 +0200

    Consolidate CreateTempName_Impl and lcl_createName more faithfully
    
    This is a follow-up to fcf455d4efde077bb2b092b607de12ebfc350275 "Consolidate
    CreateTempName_Impl and lcl_createName," which apparently lead to hard-to-
    diagnose sporadic "make check" failures on some machines.  Hope is that bLock
    now more carefully tracking the behavior of the original two functions fixes
    that.
    
    Change-Id: I37ba00545f5921fd603ff9f1ea46927c42e88899

diff --git a/unotools/source/ucbhelper/tempfile.cxx b/unotools/source/ucbhelper/tempfile.cxx
index a62e68d..3d5814f 100644
--- a/unotools/source/ucbhelper/tempfile.cxx
+++ b/unotools/source/ucbhelper/tempfile.cxx
@@ -160,13 +160,13 @@ OUString ConstructTempDir_Impl( const OUString* pParent )
 }
 
 OUString lcl_createName(
-    const OUString& rLeadingChars, unsigned long nSeed, bool bFirst,
-    const OUString* pExtension, const OUString* pParent, bool bDirectory,
-    bool bKeep)
+    const OUString& rLeadingChars, unsigned long nSeed, sal_Int16 nRadix,
+    bool bFirst, const OUString* pExtension, const OUString* pParent,
+    bool bDirectory, bool bKeep, bool bLock)
 {
     // 36 ** 6 == 2176782336
-    unsigned const nRadix = 36;
-    unsigned long const nMax = (nRadix*nRadix*nRadix*nRadix*nRadix*nRadix);
+    unsigned long const nMaxRadix = 36;
+    unsigned long const nMax = (nMaxRadix*nMaxRadix*nMaxRadix*nMaxRadix*nMaxRadix*nMaxRadix);
     nSeed %= nMax;
 
     // get correct directory
@@ -179,7 +179,7 @@ OUString lcl_createName(
     {
         OUString aTmp( aName );
         if ( bUseNumber )
-            aTmp += OUString::number( i );
+            aTmp += OUString::number(i, nRadix);
         bUseNumber = true;
         if ( pExtension )
             aTmp += *pExtension;
@@ -208,11 +208,11 @@ OUString lcl_createName(
             /* RW permission for the user only! */
             mode_t old_mode = umask(077);
 #endif
-            FileBase::RC err = aFile.open(osl_File_OpenFlag_Create);
+            FileBase::RC err = aFile.open(osl_File_OpenFlag_Create | (bLock ? 0 : osl_File_OpenFlag_NoLock));
 #ifdef UNX
             umask(old_mode);
 #endif
-            if ( err == FileBase::E_None || err == FileBase::E_NOLCK )
+            if ( err == FileBase::E_None || (bLock && err == FileBase::E_NOLCK) )
             {
                 aFile.close();
                 return aTmp;
@@ -250,7 +250,8 @@ OUString CreateTempName_Impl( const OUString* pParent, bool bKeep, bool bDir = t
 #endif
 #endif
     return lcl_createName(
-        aEyeCatcher, Time::GetSystemTicks(), true, 0, pParent, bDir, bKeep);
+        aEyeCatcher, Time::GetSystemTicks(), 36, true, 0, pParent, bDir, bKeep,
+        false);
 }
 
 OUString TempFile::CreateTempName()
@@ -277,7 +278,7 @@ TempFile::TempFile( const OUString& rLeadingChars, bool _bStartWithZero, const O
     , bIsDirectory( bDirectory )
     , bKillingFileEnabled( false )
 {
-    aName = lcl_createName(rLeadingChars, 0, _bStartWithZero, pExtension, pParent, bDirectory, true);
+    aName = lcl_createName(rLeadingChars, 0, 10, _bStartWithZero, pExtension, pParent, bDirectory, true, true);
 }
 
 TempFile::~TempFile()


More information about the Libreoffice-commits mailing list