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

Libreoffice Gerrit user logerrit at kemper.freedesktop.org
Mon Nov 5 08:44:14 UTC 2018


 basic/source/inc/runtime.hxx     |    2 
 basic/source/runtime/methods.cxx |   95 ++++++++++++++++++---------------------
 2 files changed, 47 insertions(+), 50 deletions(-)

New commits:
commit cb9d192f18082d517b805f5d84fc62bde6319ded
Author:     Mike Kaganski <mike.kaganski at collabora.com>
AuthorDate: Sun Nov 4 19:24:22 2018 +0300
Commit:     Mike Kaganski <mike.kaganski at collabora.com>
CommitDate: Mon Nov 5 09:43:24 2018 +0100

    tdf#120703 PVS: V547 Expression '!pRTLData' is always false
    
    Let SbiInstance::GetRTLData() return reference
    
    Change-Id: Iafe7e64f6f296b478003ce66ea66936a65ba9edc
    Reviewed-on: https://gerrit.libreoffice.org/62855
    Tested-by: Jenkins
    Reviewed-by: Mike Kaganski <mike.kaganski at collabora.com>

diff --git a/basic/source/inc/runtime.hxx b/basic/source/inc/runtime.hxx
index 5b7c3966a0c0..754336ea089e 100644
--- a/basic/source/inc/runtime.hxx
+++ b/basic/source/inc/runtime.hxx
@@ -184,7 +184,7 @@ public:
     SbiDdeControl* GetDdeControl() { return pDdeCtrl.get(); }
     StarBASIC* GetBasic() { return pBasic; }
     SbiDllMgr* GetDllMgr();
-    SbiRTLData* GetRTLData() const { return const_cast<SbiRTLData*>(&aRTLData); }
+    SbiRTLData& GetRTLData() const { return const_cast<SbiRTLData&>(aRTLData); }
 
     std::shared_ptr<SvNumberFormatter> const & GetNumberFormatter();
     sal_uInt32 GetStdDateIdx() const { return nStdDateIdx; }
diff --git a/basic/source/runtime/methods.cxx b/basic/source/runtime/methods.cxx
index fc7d149191ac..6d10a1a92edd 100644
--- a/basic/source/runtime/methods.cxx
+++ b/basic/source/runtime/methods.cxx
@@ -2521,15 +2521,15 @@ void SbRtl_IsMissing(StarBASIC *, SbxArray & rPar, bool)
 }
 
 // Function looks for wildcards, removes them and always returns the pure path
-static OUString implSetupWildcard( const OUString& rFileParam, SbiRTLData* pRTLData )
+static OUString implSetupWildcard(const OUString& rFileParam, SbiRTLData& rRTLData)
 {
     static sal_Char cDelim1 = '/';
     static sal_Char cDelim2 = '\\';
     static sal_Char cWild1 = '*';
     static sal_Char cWild2 = '?';
 
-    pRTLData->pWildCard.reset();
-    pRTLData->sFullNameToBeChecked.clear();
+    rRTLData.pWildCard.reset();
+    rRTLData.sFullNameToBeChecked.clear();
 
     OUString aFileParam = rFileParam;
     sal_Int32 nLastWild = aFileParam.lastIndexOf( cWild1 );
@@ -2558,7 +2558,7 @@ static OUString implSetupWildcard( const OUString& rFileParam, SbiRTLData* pRTLD
         OUString aPathStr = getFullPath( aFileParam );
         if( nLastDelim != aFileParam.getLength() - 1 )
         {
-            pRTLData->sFullNameToBeChecked = aPathStr;
+            rRTLData.sFullNameToBeChecked = aPathStr;
         }
         return aPathStr;
     }
@@ -2582,18 +2582,18 @@ static OUString implSetupWildcard( const OUString& rFileParam, SbiRTLData* pRTLD
     // invalid anyway because it was not accepted by OSL before
     if (aPureFileName != "*")
     {
-        pRTLData->pWildCard = o3tl::make_unique<WildCard>( aPureFileName );
+        rRTLData.pWildCard = o3tl::make_unique<WildCard>(aPureFileName);
     }
     return aPathStr;
 }
 
-static bool implCheckWildcard( const OUString& rName, SbiRTLData const * pRTLData )
+static bool implCheckWildcard(const OUString& rName, SbiRTLData const& rRTLData)
 {
     bool bMatch = true;
 
-    if( pRTLData->pWildCard )
+    if (rRTLData.pWildCard)
     {
-        bMatch = pRTLData->pWildCard->Matches( rName );
+        bMatch = rRTLData.pWildCard->Matches(rName);
     }
     return bMatch;
 }
@@ -2641,14 +2641,8 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
     }
     else
     {
-        SbiRTLData* pRTLData = GetSbData()->pInst->GetRTLData();
+        SbiRTLData& rRTLData = GetSbData()->pInst->GetRTLData();
 
-        // #34645: can also be called from the URL line via 'macro: Dir'
-        // there's no pRTLDate existing in that case and the method must be left
-        if( !pRTLData )
-        {
-            return;
-        }
         if( hasUno() )
         {
             const uno::Reference< ucb::XSimpleFileAccess3 >& xSFI = getFileAccess();
@@ -2658,8 +2652,8 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                 {
                     OUString aFileParam = rPar.Get(1)->GetOUString();
 
-                    OUString aFileURLStr = implSetupWildcard( aFileParam, pRTLData );
-                    if( !pRTLData->sFullNameToBeChecked.isEmpty())
+                    OUString aFileURLStr = implSetupWildcard(aFileParam, rRTLData);
+                    if (!rRTLData.sFullNameToBeChecked.isEmpty())
                     {
                         bool bExists = false;
                         try { bExists = xSFI->exists( aFileURLStr ); }
@@ -2693,16 +2687,17 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                         SbAttributes nFlags = SbAttributes::NONE;
                         if ( nParCount > 2 )
                         {
-                            pRTLData->nDirFlags = nFlags = static_cast<SbAttributes>(rPar.Get(2)->GetInteger());
+                            rRTLData.nDirFlags = nFlags
+                                = static_cast<SbAttributes>(rPar.Get(2)->GetInteger());
                         }
                         else
                         {
-                            pRTLData->nDirFlags = SbAttributes::NONE;
+                            rRTLData.nDirFlags = SbAttributes::NONE;
                         }
                         // Read directory
                         bool bIncludeFolders = bool(nFlags & SbAttributes::DIRECTORY);
-                        pRTLData->aDirSeq = xSFI->getFolderContents( aDirURLStr, bIncludeFolders );
-                        pRTLData->nCurDirPos = 0;
+                        rRTLData.aDirSeq = xSFI->getFolderContents(aDirURLStr, bIncludeFolders);
+                        rRTLData.nCurDirPos = 0;
 
                         // #78651 Add "." and ".." directories for VB compatibility
                         if( bIncludeFolders )
@@ -2715,7 +2710,7 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                             // returned "." and for -1 ".."
                             if( !bRoot )
                             {
-                                pRTLData->nCurDirPos = -2;
+                                rRTLData.nCurDirPos = -2;
                             }
                         }
                     }
@@ -2725,35 +2720,36 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                 }
 
 
-                if( pRTLData->aDirSeq.getLength() > 0 )
+                if (rRTLData.aDirSeq.getLength() > 0)
                 {
-                    bool bFolderFlag = bool(pRTLData->nDirFlags & SbAttributes::DIRECTORY);
+                    bool bFolderFlag = bool(rRTLData.nDirFlags & SbAttributes::DIRECTORY);
 
                     SbiInstance* pInst = GetSbData()->pInst;
                     bool bCompatibility = ( pInst && pInst->IsCompatibility() );
                     for( ;; )
                     {
-                        if( pRTLData->nCurDirPos < 0 )
+                        if (rRTLData.nCurDirPos < 0)
                         {
-                            if( pRTLData->nCurDirPos == -2 )
+                            if (rRTLData.nCurDirPos == -2)
                             {
                                 aPath = ".";
                             }
-                            else if( pRTLData->nCurDirPos == -1 )
+                            else if (rRTLData.nCurDirPos == -1)
                             {
                                 aPath = "..";
                             }
-                            pRTLData->nCurDirPos++;
+                            rRTLData.nCurDirPos++;
                         }
-                        else if( pRTLData->nCurDirPos >= pRTLData->aDirSeq.getLength() )
+                        else if (rRTLData.nCurDirPos >= rRTLData.aDirSeq.getLength())
                         {
-                            pRTLData->aDirSeq.realloc( 0 );
+                            rRTLData.aDirSeq.realloc(0);
                             aPath.clear();
                             break;
                         }
                         else
                         {
-                            OUString aFile = pRTLData->aDirSeq.getConstArray()[pRTLData->nCurDirPos++];
+                            OUString aFile
+                                = rRTLData.aDirSeq.getConstArray()[rRTLData.nCurDirPos++];
 
                             if( bCompatibility )
                             {
@@ -2784,7 +2780,7 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                                                   INetURLObject::DecodeMechanism::WithCharset );
                         }
 
-                        bool bMatch = implCheckWildcard( aPath, pRTLData );
+                        bool bMatch = implCheckWildcard(aPath, rRTLData);
                         if( !bMatch )
                         {
                             continue;
@@ -2802,31 +2798,32 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
             {
                 OUString aFileParam = rPar.Get(1)->GetOUString();
 
-                OUString aDirURL = implSetupWildcard( aFileParam, pRTLData );
+                OUString aDirURL = implSetupWildcard(aFileParam, rRTLData);
 
                 SbAttributes nFlags = SbAttributes::NONE;
                 if ( nParCount > 2 )
                 {
-                    pRTLData->nDirFlags = nFlags = static_cast<SbAttributes>( rPar.Get(2)->GetInteger() );
+                    rRTLData.nDirFlags = nFlags
+                        = static_cast<SbAttributes>(rPar.Get(2)->GetInteger());
                 }
                 else
                 {
-                    pRTLData->nDirFlags = SbAttributes::NONE;
+                    rRTLData.nDirFlags = SbAttributes::NONE;
                 }
 
                 // Read directory
                 bool bIncludeFolders = bool(nFlags & SbAttributes::DIRECTORY);
-                pRTLData->pDir = o3tl::make_unique<Directory>( aDirURL );
-                FileBase::RC nRet = pRTLData->pDir->open();
+                rRTLData.pDir = o3tl::make_unique<Directory>(aDirURL);
+                FileBase::RC nRet = rRTLData.pDir->open();
                 if( nRet != FileBase::E_None )
                 {
-                    pRTLData->pDir.reset();
+                    rRTLData.pDir.reset();
                     rPar.Get(0)->PutString( OUString() );
                     return;
                 }
 
                 // #86950 Add "." and ".." directories for VB compatibility
-                pRTLData->nCurDirPos = 0;
+                rRTLData.nCurDirPos = 0;
                 if( bIncludeFolders )
                 {
                     bool bRoot = isRootDir( aDirURL );
@@ -2837,36 +2834,36 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                     // returned "." and for -1 ".."
                     if( !bRoot )
                     {
-                        pRTLData->nCurDirPos = -2;
+                        rRTLData.nCurDirPos = -2;
                     }
                 }
 
             }
 
-            if( pRTLData->pDir )
+            if (rRTLData.pDir)
             {
-                bool bFolderFlag = bool(pRTLData->nDirFlags & SbAttributes::DIRECTORY);
+                bool bFolderFlag = bool(rRTLData.nDirFlags & SbAttributes::DIRECTORY);
                 for( ;; )
                 {
-                    if( pRTLData->nCurDirPos < 0 )
+                    if (rRTLData.nCurDirPos < 0)
                     {
-                        if( pRTLData->nCurDirPos == -2 )
+                        if (rRTLData.nCurDirPos == -2)
                         {
                             aPath = ".";
                         }
-                        else if( pRTLData->nCurDirPos == -1 )
+                        else if (rRTLData.nCurDirPos == -1)
                         {
                             aPath = "..";
                         }
-                        pRTLData->nCurDirPos++;
+                        rRTLData.nCurDirPos++;
                     }
                     else
                     {
                         DirectoryItem aItem;
-                        FileBase::RC nRet = pRTLData->pDir->getNextItem( aItem );
+                        FileBase::RC nRet = rRTLData.pDir->getNextItem(aItem);
                         if( nRet != FileBase::E_None )
                         {
-                            pRTLData->pDir.reset();
+                            rRTLData.pDir.reset();
                             aPath.clear();
                             break;
                         }
@@ -2894,7 +2891,7 @@ void SbRtl_Dir(StarBASIC *, SbxArray & rPar, bool)
                         aPath = aFileStatus.getFileName();
                     }
 
-                    bool bMatch = implCheckWildcard( aPath, pRTLData );
+                    bool bMatch = implCheckWildcard(aPath, rRTLData);
                     if( !bMatch )
                     {
                         continue;


More information about the Libreoffice-commits mailing list