connectivity/source/drivers/odbcbase/ODatabaseMetaDataResultSet.cxx |   13 
++++++++++
 1 file changed, 13 insertions(+)

New commits:
commit 56ef010aef4db3515f713ad9a2b587fb8402cf2b
Author: Lionel Elie Mamane <lio...@mamane.lu>
Date:   Tue Jul 10 17:18:56 2012 +0200

    fdo#50849 work around psqlodbc segfault
    
    Change-Id: Ib7e484f778d97b3f18845cef12718618324c859f

diff --git 
a/connectivity/source/drivers/odbcbase/ODatabaseMetaDataResultSet.cxx 
b/connectivity/source/drivers/odbcbase/ODatabaseMetaDataResultSet.cxx
index e795693..f4e56ab 100644
--- a/connectivity/source/drivers/odbcbase/ODatabaseMetaDataResultSet.cxx
+++ b/connectivity/source/drivers/odbcbase/ODatabaseMetaDataResultSet.cxx
@@ -1152,6 +1152,19 @@ void 
ODatabaseMetaDataResultSet::openSpecialColumns(sal_Bool _bRowVer,const Any&
                                     const ::rtl::OUString& table,sal_Int32 
scope,   sal_Bool nullable )
                                     throw(SQLException, RuntimeException)
 {
+    // Some ODBC drivers really don't like getting an empty string as tableName
+    // E.g. psqlodbc up to at least version 09.01.0100 segfaults
+    if (table.isEmpty())
+    {
+        const char errMsg[] = "ODBC: Trying to get special columns of empty 
table name";
+        const char SQLState[] = "HY009";
+        throw SQLException( ::rtl::OUString(errMsg, sizeof(errMsg) - 
sizeof(errMsg[0]), RTL_TEXTENCODING_ASCII_US),
+                            *this,
+                            ::rtl::OUString(SQLState, sizeof(SQLState) - 
sizeof(SQLState[0]), RTL_TEXTENCODING_ASCII_US),
+                            -1,
+                            Any() );
+    }
+
     const ::rtl::OUString *pSchemaPat = NULL;
 
     if(schema.toChar() != '%')
_______________________________________________
Libreoffice-commits mailing list
libreoffice-comm...@lists.freedesktop.org
http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits

Reply via email to