dbaccess/source/ui/misc/UITools.cxx                      |   24 +++++++++++----
 dbaccess/source/ui/relationdesign/RelationController.cxx |    2 +
 2 files changed, 20 insertions(+), 6 deletions(-)

New commits:
commit 8b2b75106147d0c2499283059286914ac037aa2d
Author:     prrvchr <prrv...@gmail.com>
AuthorDate: Tue Aug 12 11:51:50 2025 +0200
Commit:     Mike Kaganski <mike.kagan...@collabora.com>
CommitDate: Tue Aug 12 17:15:29 2025 +0200

    tdf#167495 Base need to close ResultSet after using it.
    
    Change-Id: Ic33036a8f23d19b2cc0bc858c88a69f1c3623cc2
    Reviewed-on: https://gerrit.libreoffice.org/c/core/+/189414
    Reviewed-by: Mike Kaganski <mike.kagan...@collabora.com>
    Tested-by: Jenkins

diff --git a/dbaccess/source/ui/misc/UITools.cxx 
b/dbaccess/source/ui/misc/UITools.cxx
index e727cd9a3a5e..4d22d004f37b 100644
--- a/dbaccess/source/ui/misc/UITools.cxx
+++ b/dbaccess/source/ui/misc/UITools.cxx
@@ -604,7 +604,11 @@ void fillTypeInfo(  const Reference< 
css::sdbc::XConnection>& _rxConnection,
 
     // Close the result set/statement.
 
-    ::comphelper::disposeComponent(xRs);
+    Reference<XCloseable> xCloseable(xRs, UNO_QUERY);
+    if (xCloseable.is())
+        xCloseable->close();
+    else
+        ::comphelper::disposeComponent(xRs);
 }
 
 void setColumnProperties(const Reference<XPropertySet>& _rxColumn,const 
OFieldDescription* _pFieldDesc)
@@ -642,12 +646,20 @@ OUString createDefaultName(const Reference< 
XDatabaseMetaData>& _xMetaData,const
                 if ( sCatalog.isEmpty() )
                 {
                     Reference<XResultSet> xRes = _xMetaData->getCatalogs();
-                    Reference<XRow> xRow(xRes,UNO_QUERY);
-                    while(xRes.is() && xRes->next())
+                    if ( xRes.is() )
                     {
-                        sCatalog = xRow->getString(1);
-                        if(!xRow->wasNull())
-                            break;
+                        Reference<XRow> xRow(xRes,UNO_QUERY);
+                        while(xRes->next())
+                        {
+                            sCatalog = xRow->getString(1);
+                            if(!xRow->wasNull())
+                                break;
+                        }
+                        Reference<XCloseable> xCloseable(xRes, UNO_QUERY);
+                        if (xCloseable.is())
+                            xCloseable->close();
+                        else
+                            ::comphelper::disposeComponent(xRes);
                     }
                 }
             }
diff --git a/dbaccess/source/ui/relationdesign/RelationController.cxx 
b/dbaccess/source/ui/relationdesign/RelationController.cxx
index c87a6a192284..b2fc5c0ffec3 100644
--- a/dbaccess/source/ui/relationdesign/RelationController.cxx
+++ b/dbaccess/source/ui/relationdesign/RelationController.cxx
@@ -300,6 +300,8 @@ namespace
                     Reference<XCloseable> xCloseable(xResult,UNO_QUERY);
                     if (xCloseable.is())
                         xCloseable->close();
+                    else
+                        ::comphelper::disposeComponent(xResult);
                 }
             }
             catch( const Exception& )

Reply via email to