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

Julien Nabet serval2412 at yahoo.fr
Sat Apr 7 04:39:53 UTC 2018


 dbaccess/source/ui/querydesign/QueryTableView.cxx     |    3 
 dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx |   57 +++++++++---------
 2 files changed, 33 insertions(+), 27 deletions(-)

New commits:
commit 602774aef7d8b2f03914939dd230dd1c67d0093b
Author: Julien Nabet <serval2412 at yahoo.fr>
Date:   Sat Apr 7 00:10:33 2018 +0200

    Fix crash from regression due to ba98f6e3e4dbfc23474e13d59bb08c618ee8c4e5
    
    "Modernize a bit more dbaccess (part2)" 2018-03-10
    
    bt:
    0  0x00007fffc7e63986 in Point::X() const (this=0x48) at /home/julien/lo/libreoffice/include/tools/gen.hxx:85
    1  0x00007fffc81ab6c8 in dbaui::OTableWindowData::HasPosition() const (this=0x0) at /home/julien/lo/libreoffice/dbaccess/source/ui/querydesign/TableWindowData.cxx:68
    2  0x00007fffc81a40e7 in dbaui::OTableWindow::OTableWindow(vcl::Window*, std::shared_ptr<dbaui::OTableWindowData> const&) (this=0x555558dd5b40, __vtt_parm=0x7fffc87b80a8 <VTT for dbaui::OQueryTableWindow+8>, pParent=0x555558c23ea0, pTabWinData=std::shared_ptr<dbaui::OTableWindowData> (empty) = {...}, __in_chrg=<optimized out>)
        at /home/julien/lo/libreoffice/dbaccess/source/ui/querydesign/TableWindow.cxx:105
    3  0x00007fffc8139909 in dbaui::OQueryTableWindow::OQueryTableWindow(vcl::Window*, std::shared_ptr<dbaui::OTableWindowData> const&) (this=0x555558dd5b40, pParent=0x555558c23ea0, pTabWinData=std::shared_ptr<dbaui::OTableWindowData> (empty) = {...}, __in_chrg=<optimized out>, __vtt_parm=<optimized out>)
        at /home/julien/lo/libreoffice/dbaccess/source/ui/querydesign/QTableWindow.cxx:54
    4  0x00007fffc817b14b in VclPtr<dbaui::OQueryTableWindow>::Create<dbaui::OQueryTableView*, std::shared_ptr<dbaui::OTableWindowData> const&>(dbaui::OQueryTableView*&&, std::shared_ptr<dbaui::OTableWindowData> const&) (arg#0=<unknown type in /home/julien/lo/libreoffice/instdir/program/../program/libdbulo.so, CU 0x3138246, DIE 0x31b256b>, arg#1=std::shared_ptr<dbaui::OTableWindowData> (empty) = {...}) at /home/julien/lo/libreoffice/include/vcl/vclptr.hxx:131
    5  0x00007fffc8175cff in dbaui::OQueryTableView::createWindow(std::shared_ptr<dbaui::OTableWindowData> const&) (this=
        0x555558c23ea0, _pData=std::shared_ptr<dbaui::OTableWindowData> (empty) = {...}) at /home/julien/lo/libreoffice/dbaccess/source/ui/querydesign/QueryTableView.cxx:284
    6  0x00007fffc8176a28 in dbaui::OQueryTableView::AddTabWin(rtl::OUString const&, rtl::OUString const&, rtl::OUString const&, bool) (this=0x555558c23ea0, _rComposedName="table-number", _rTableName="table-number", strAlias="table-number", bNewTable=false) at /home/julien/lo/libreoffice/dbaccess/source/ui/querydesign/QueryTableView.cxx:419
    7  0x00007fffc8176304 in dbaui::OQueryTableView::AddTabWin(rtl::OUString const&, rtl::OUString const&, bool) (this=0x555558c23ea0, _rTableName="table-number", _rAliasName="table-number", bNewTable=false) at /home/julien/lo/libreoffice/dbaccess/source/ui/querydesign/QueryTableView.cxx:357
    
    the fix concerns dbaccess/source/ui/querydesign/QueryTableView.cxx
    
    but also fixed some other pbs like:
    warn:legacy.osl:22883:22883:dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx:1648: OTableFieldDescRef was null!
    
    Change-Id: Ief02cdec2f49c0cf04a7a270e66ad27ec255522c
    Reviewed-on: https://gerrit.libreoffice.org/52527
    Reviewed-by: Julien Nabet <serval2412 at yahoo.fr>
    Tested-by: Jenkins <ci at libreoffice.org>

diff --git a/dbaccess/source/ui/querydesign/QueryTableView.cxx b/dbaccess/source/ui/querydesign/QueryTableView.cxx
index bf149bba7c23..87fefc9970a7 100644
--- a/dbaccess/source/ui/querydesign/QueryTableView.cxx
+++ b/dbaccess/source/ui/querydesign/QueryTableView.cxx
@@ -403,7 +403,8 @@ void OQueryTableView::AddTabWin(const OUString& _rComposedName, const OUString&
     bool bFoundElem = false;
     for (auto const& elem : rWindowData)
     {
-        if (elem && elem->GetWinName() == strAlias && elem->GetComposedName() == _rComposedName && elem->GetTableName() == _rTableName)
+        pNewTabWinData = elem;
+        if (pNewTabWinData && pNewTabWinData->GetWinName() == strAlias && pNewTabWinData->GetComposedName() == _rComposedName && pNewTabWinData->GetTableName() == _rTableName)
         {
             bFoundElem = true;
             break;
diff --git a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
index b25c72a78be1..b61c9750b1a2 100644
--- a/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
+++ b/dbaccess/source/ui/querydesign/SelectionBrowseBox.cxx
@@ -1614,8 +1614,9 @@ OTableFieldDescRef OSelectionBrowseBox::FindFirstFreeCol(sal_uInt16& _rColumnPos
     for (auto const& field : getFields())
     {
         ++_rColumnPosition;
-        if ( field.is() && field->IsEmpty() )
-            return field;
+        OTableFieldDescRef pEntry = field;
+        if ( pEntry.is() && pEntry->IsEmpty() )
+            return pEntry;
     }
 
     return nullptr;
@@ -1645,19 +1646,20 @@ void OSelectionBrowseBox::AddGroupBy( const OTableFieldDescRef& rInfo )
     bool bAllFieldsSearched = true;
     for (auto const& field : getFields())
     {
+        pEntry = field;
         OSL_ENSURE(pEntry.is(),"OTableFieldDescRef was null!");
 
-        const OUString   aField = field->GetField();
-        const OUString   aAlias = field->GetAlias();
+        const OUString   aField = pEntry->GetField();
+        const OUString   aAlias = pEntry->GetAlias();
 
         if (bCase(aField,rInfo->GetField()) &&
             bCase(aAlias,rInfo->GetAlias()) &&
-            field->GetFunctionType() == rInfo->GetFunctionType() &&
-            field->GetFunction() == rInfo->GetFunction())
+            pEntry->GetFunctionType() == rInfo->GetFunctionType() &&
+            pEntry->GetFunction() == rInfo->GetFunction())
         {
-            if ( field->isNumericOrAggreateFunction() && rInfo->IsGroupBy() )
+            if ( pEntry->isNumericOrAggreateFunction() && rInfo->IsGroupBy() )
             {
-                field->SetGroupBy(false);
+                pEntry->SetGroupBy(false);
                 // we do want to consider that bAllFieldsSearched still true here
                 // bAllFieldsSearched = false;
                 break;
@@ -1690,10 +1692,11 @@ void OSelectionBrowseBox::DuplicateConditionLevel( const sal_uInt16 nLevel)
     const sal_uInt16 nNewLevel = nLevel +1;
     for (auto const& field : getFields())
     {
-        OUString sValue = field->GetCriteria(nLevel);
+        OTableFieldDescRef pEntry = field;
+        OUString sValue = pEntry->GetCriteria(nLevel);
         if ( !sValue.isEmpty() )
         {
-            field->SetCriteria( nNewLevel, sValue);
+            pEntry->SetCriteria( nNewLevel, sValue);
             if ( nNewLevel == (m_nVisibleCount-BROW_CRIT1_ROW-1) )
             {
                 RowInserted( GetRowCount()-1 );
@@ -1719,25 +1722,26 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const O
     bool bAllFieldsSearched = true;
     for (auto const& field : getFields())
     {
-        const OUString   aField = field->GetField();
-        const OUString   aAlias = field->GetAlias();
+        OTableFieldDescRef pEntry = field;
+        const OUString   aField = pEntry->GetField();
+        const OUString   aAlias = pEntry->GetAlias();
 
         if (bCase(aField,rInfo->GetField()) &&
             bCase(aAlias,rInfo->GetAlias()) &&
-            field->GetFunctionType() == rInfo->GetFunctionType() &&
-            field->GetFunction() == rInfo->GetFunction() &&
-            field->IsGroupBy() == rInfo->IsGroupBy() )
+            pEntry->GetFunctionType() == rInfo->GetFunctionType() &&
+            pEntry->GetFunction() == rInfo->GetFunction() &&
+            pEntry->IsGroupBy() == rInfo->IsGroupBy() )
         {
-            if ( field->isNumericOrAggreateFunction() && rInfo->IsGroupBy() )
-                field->SetGroupBy(false);
+            if ( pEntry->isNumericOrAggreateFunction() && rInfo->IsGroupBy() )
+                pEntry->SetGroupBy(false);
             else
             {
-                if(!m_bGroupByUnRelated && field->IsGroupBy())
-                    field->SetVisible();
+                if(!m_bGroupByUnRelated && pEntry->IsGroupBy())
+                    pEntry->SetVisible();
             }
-            if (field->GetCriteria(nLevel).isEmpty() )
+            if (pEntry->GetCriteria(nLevel).isEmpty() )
             {
-                field->SetCriteria( nLevel, rValue);
+                pEntry->SetCriteria( nLevel, rValue);
                 if(nLevel == (m_nVisibleCount-BROW_CRIT1_ROW-1))
                 {
                     RowInserted( GetRowCount()-1 );
@@ -1750,7 +1754,7 @@ void OSelectionBrowseBox::AddCondition( const OTableFieldDescRef& rInfo, const O
             }
             if ( _bAddOrOnOneLine )
             {
-                pLastEntry = field;
+                pLastEntry = pEntry;
             }
         }
     }
@@ -1807,8 +1811,9 @@ void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrde
     bool bAllFieldsSearched = true;
     for (auto const& field : getFields())
     {
-        OUString aField = field->GetField();
-        OUString aAlias = field->GetAlias();
+        pEntry = field;
+        OUString aField = pEntry->GetField();
+        OUString aAlias = pEntry->GetAlias();
 
         if (bCase(aField,rInfo->GetField()) &&
             bCase(aAlias,rInfo->GetAlias()))
@@ -1823,8 +1828,8 @@ void OSelectionBrowseBox::AddOrder( const OTableFieldDescRef& rInfo, const EOrde
             else
             {
                 if ( !m_bOrderByUnRelated )
-                    field->SetVisible();
-                field->SetOrderDir( eDir );
+                    pEntry->SetVisible();
+                pEntry->SetOrderDir( eDir );
                 m_nLastSortColumn = nPos;
             }
             bAllFieldsSearched = false;


More information about the Libreoffice-commits mailing list