List:Commits« Previous MessageNext Message »
From:bdegtyariov Date:February 23 2006 6:00pm
Subject:Connector/ODBC 3.51 commit: r34 - myodbc3S myodbc3u
View as plain text  
Modified:
   myodbc3S/MYODBCSetupDataSourceDialog.cpp
   myodbc3u/MYODBCUtil.h
   myodbc3u/MYODBCUtilClearDataSource.c
   myodbc3u/MYODBCUtilFreeDataSource.c
   myodbc3u/MYODBCUtilReadConnectStr.c
   myodbc3u/MYODBCUtilReadDataSource.c
   myodbc3u/MYODBCUtilReadDataSourceStr.c
Log:
Fixed the problem with MS Access and other GUI applications when SQL_DRIVER_PROMPT is
used. Allocation of DSN parameters, passed from/to myodbc3S module, is being performed in
Global Heap.

Modified: myodbc3S/MYODBCSetupDataSourceDialog.cpp
===================================================================
--- myodbc3S/MYODBCSetupDataSourceDialog.cpp	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3S/MYODBCSetupDataSourceDialog.cpp	2006-02-23 18:00:48 UTC (rev 34)
@@ -227,44 +227,44 @@
 
 #if QT_VERSION >= 0x040000
         if ( !ptab1->getDataSourceName().isEmpty() )
-            pDataSource->pszDSN = strdup( ptab1->getDataSourceName().toAscii() );
+            pDataSource->pszDSN = _global_strdup(
ptab1->getDataSourceName().toAscii() );
         if ( !ptab1->getDescription().isEmpty() )
-            pDataSource->pszDESCRIPTION = strdup( ptab1->getDescription().toAscii()
);
+            pDataSource->pszDESCRIPTION = _global_strdup(
ptab1->getDescription().toAscii() );
 
         if ( !ptab1->getServer().isEmpty() )
-            pDataSource->pszSERVER = strdup( ptab1->getServer().toAscii() );
+            pDataSource->pszSERVER = _global_strdup( ptab1->getServer().toAscii()
);
         if ( !ptab1->getUser().isEmpty() )
-            pDataSource->pszUSER = strdup( ptab1->getUser().toAscii() );
+            pDataSource->pszUSER = _global_strdup( ptab1->getUser().toAscii() );
         if ( !ptab1->getPassword().isEmpty() )
-            pDataSource->pszPASSWORD = strdup( ptab1->getPassword().toAscii() );
+            pDataSource->pszPASSWORD = _global_strdup(
ptab1->getPassword().toAscii() );
         if ( !ptab1->getDatabase().isEmpty() )
-            pDataSource->pszDATABASE = strdup( ptab1->getDatabase().toAscii() );
+            pDataSource->pszDATABASE = _global_strdup(
ptab1->getDatabase().toAscii() );
         if ( !ptab2->getPort().isEmpty() )
-            pDataSource->pszPORT = strdup( ptab2->getPort().toAscii() );
+            pDataSource->pszPORT = _global_strdup( ptab2->getPort().toAscii() );
         if ( !ptab2->getSocket().isEmpty() )
-            pDataSource->pszSOCKET = strdup( ptab2->getSocket().toAscii() );
+            pDataSource->pszSOCKET = _global_strdup( ptab2->getSocket().toAscii()
);
         if ( !ptab2->getInitialStatement().isEmpty() )
-            pDataSource->pszSTMT = strdup( ptab2->getInitialStatement().toAscii()
);
+            pDataSource->pszSTMT = _global_strdup(
ptab2->getInitialStatement().toAscii() );
 #else
         if ( !ptab1->getDataSourceName().isEmpty() )
-            pDataSource->pszDSN = strdup( ptab1->getDataSourceName().ascii() );
+            pDataSource->pszDSN = _global_strdup(
ptab1->getDataSourceName().ascii() );
         if ( !ptab1->getDescription().isEmpty() )
-            pDataSource->pszDESCRIPTION = strdup( ptab1->getDescription().ascii()
);
+            pDataSource->pszDESCRIPTION = _global_strdup(
ptab1->getDescription().ascii() );
 
         if ( !ptab1->getServer().isEmpty() )
-            pDataSource->pszSERVER = strdup( ptab1->getServer().ascii() );
+            pDataSource->pszSERVER = _global_strdup( ptab1->getServer().ascii() );
         if ( !ptab1->getUser().isEmpty() )
-            pDataSource->pszUSER = strdup( ptab1->getUser().ascii() );
+            pDataSource->pszUSER = _global_strdup( ptab1->getUser().ascii() );
         if ( !ptab1->getPassword().isEmpty() )
-            pDataSource->pszPASSWORD = strdup( ptab1->getPassword().ascii() );
+            pDataSource->pszPASSWORD = _global_strdup( ptab1->getPassword().ascii()
);
         if ( !ptab1->getDatabase().isEmpty() )
-            pDataSource->pszDATABASE = strdup( ptab1->getDatabase().ascii() );
+            pDataSource->pszDATABASE = _global_strdup( ptab1->getDatabase().ascii()
);
         if ( !ptab2->getPort().isEmpty() )
-            pDataSource->pszPORT = strdup( ptab2->getPort().ascii() );
+            pDataSource->pszPORT = _global_strdup( ptab2->getPort().ascii() );
         if ( !ptab2->getSocket().isEmpty() )
-            pDataSource->pszSOCKET = strdup( ptab2->getSocket().ascii() );
+            pDataSource->pszSOCKET = _global_strdup( ptab2->getSocket().ascii() );
         if ( !ptab2->getInitialStatement().isEmpty() )
-            pDataSource->pszSTMT = strdup( ptab2->getInitialStatement().ascii() );
+            pDataSource->pszSTMT = _global_strdup(
ptab2->getInitialStatement().ascii() );
 #endif
 
         unsigned int nFlags = ptab3->getFlags();

Modified: myodbc3u/MYODBCUtil.h
===================================================================
--- myodbc3u/MYODBCUtil.h	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3u/MYODBCUtil.h	2006-02-23 18:00:48 UTC (rev 34)
@@ -223,6 +223,18 @@
 BOOL                    MYODBCUtilWriteConnectStr( MYODBCUTIL_DATASOURCE *pDataSource,
char *pszStr, SQLSMALLINT nMaxLen );
 BOOL                    MYODBCUtilInsertStr( char *pszStr, LPCSTR pszStrIn, SQLSMALLINT
nMaxLen, int *pnIndex );
 
+#if defined(WIN32)
+char *strglobaldup( const char *s);
+char *strnglobaldup( const char *s, size_t n);
+#define _global_strdup(s) strglobaldup(s)
+#define _global_strndup(s, n) strnglobaldup(s, n)
+#define _global_free(p) GlobalFree(p)
+#else
+#define _global_strdup(s) strdup(s)
+#define _global_strndup(s) strndup(s)
+#define _global_free(p) free(p)
+#endif
+
 #ifdef __cplusplus
 }
 #endif

Modified: myodbc3u/MYODBCUtilClearDataSource.c
===================================================================
--- myodbc3u/MYODBCUtilClearDataSource.c	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3u/MYODBCUtilClearDataSource.c	2006-02-23 18:00:48 UTC (rev 34)
@@ -27,6 +27,7 @@
             nMode, nConnect, and nPrompt.
   
 */  
+
 void MYODBCUtilClearDataSource( MYODBCUTIL_DATASOURCE *pDataSource )
 {
     if ( !pDataSource )
@@ -34,52 +35,52 @@
 
     if ( pDataSource->pszDATABASE )
     {
-        free( pDataSource->pszDATABASE );
+		_global_free( pDataSource->pszDATABASE );
         pDataSource->pszDATABASE = NULL;
     }
     if ( pDataSource->pszDESCRIPTION )
     {
-        free( pDataSource->pszDESCRIPTION );
+        _global_free( pDataSource->pszDESCRIPTION );
         pDataSource->pszDESCRIPTION = NULL;
     }
     if ( pDataSource->pszDSN )
     {
-        free( pDataSource->pszDSN );
+        _global_free( pDataSource->pszDSN );
         pDataSource->pszDSN = NULL;
     }
     if ( pDataSource->pszOPTION )
     {
-        free( pDataSource->pszOPTION );
+        _global_free( pDataSource->pszOPTION );
         pDataSource->pszDSN = NULL;
     }
     if ( pDataSource->pszPASSWORD )
     {
-        free( pDataSource->pszPASSWORD );
+        _global_free( pDataSource->pszPASSWORD );
         pDataSource->pszPASSWORD = NULL;
     }
     if ( pDataSource->pszPORT )
     {
-        free( pDataSource->pszPORT );
+        _global_free( pDataSource->pszPORT );
         pDataSource->pszPORT = NULL;
     }
     if ( pDataSource->pszSERVER )
     {
-        free( pDataSource->pszSERVER );
+        _global_free( pDataSource->pszSERVER );
         pDataSource->pszSERVER = NULL;
     }
     if ( pDataSource->pszSOCKET )
     {
-        free( pDataSource->pszSOCKET );
+        _global_free( pDataSource->pszSOCKET );
         pDataSource->pszSOCKET = NULL;
     }
     if ( pDataSource->pszSTMT )
     {
-        free( pDataSource->pszSTMT );
+        _global_free( pDataSource->pszSTMT );
         pDataSource->pszSTMT = NULL;
     }
     if ( pDataSource->pszUSER )
     {
-        free( pDataSource->pszUSER );
+        _global_free( pDataSource->pszUSER );
         pDataSource->pszUSER = NULL;
     }
 }

Modified: myodbc3u/MYODBCUtilFreeDataSource.c
===================================================================
--- myodbc3u/MYODBCUtilFreeDataSource.c	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3u/MYODBCUtilFreeDataSource.c	2006-02-23 18:00:48 UTC (rev 34)
@@ -31,9 +31,9 @@
 
     MYODBCUtilClearDataSource( pDataSource );
     if ( pDataSource->pszDriverFileName )
-        free( pDataSource->pszDriverFileName );
+        _global_free( pDataSource->pszDriverFileName );
     if ( pDataSource->pszDRIVER )
-        free( pDataSource->pszDRIVER );
+        _global_free( pDataSource->pszDRIVER );
 
     free( pDataSource );
 }

Modified: myodbc3u/MYODBCUtilReadConnectStr.c
===================================================================
--- myodbc3u/MYODBCUtilReadConnectStr.c	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3u/MYODBCUtilReadConnectStr.c	2006-02-23 18:00:48 UTC (rev 34)
@@ -105,18 +105,18 @@
                         if ( strcasecmp( pszName, "DATABASE" ) == 0 || strcasecmp(
pszName, "DB" ) == 0 )
                         {
                             if ( !pDataSource->pszDATABASE )
-                                pDataSource->pszDATABASE = (char *)strndup(
pAnchorChar, pScanChar - pAnchorChar ) ;
+                                pDataSource->pszDATABASE = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar ) ;
                         }
                         else if ( strcasecmp( pszName, "DESCRIPTION" ) == 0 ||
strcasecmp( pszName, "DESC" ) == 0 )
                         {
                             if ( !pDataSource->pszDESCRIPTION )
-                                pDataSource->pszDESCRIPTION = (char *)strndup(
pAnchorChar, pScanChar - pAnchorChar );
+                                pDataSource->pszDESCRIPTION = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "DRIVER" ) == 0 )
                         {
                             if ( !pDataSource->pszDRIVER &&
!pDataSource->pszDSN ) /* we use one or other - whichever comes 1st */
                             {
-                                pDataSource->pszDRIVER = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar ); /* friendly name such as; "MySQL ODBC 3.51 Driver" */
+                                pDataSource->pszDRIVER = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar ); /* friendly name such as; "MySQL ODBC 3.51
Driver" */
                                 pDataSource->nConnect =
MYODBCUTIL_DATASOURCE_CONNECT_DRIVER;
                             }
                         }
@@ -124,14 +124,14 @@
                         {
                             if ( !pDataSource->pszDSN &&
!pDataSource->pszDRIVER ) /* we use one or other - whichever comes 1st */
                             {
-                                pDataSource->pszDSN = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszDSN = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                                 pDataSource->nConnect =
MYODBCUTIL_DATASOURCE_CONNECT_DSN;
                             }
                         }
                         else if ( strcasecmp( pszName, "OPTION" ) == 0 )
                         {    
                             if ( !pDataSource->pszOPTION )
-                                pDataSource->pszOPTION = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszOPTION = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         /*
                             MYODBC RULE
@@ -141,27 +141,27 @@
                         else if ( strcasecmp( pszName, "PWD" ) == 0 || strcasecmp(
pszName, "PASSWORD" ) == 0 )
                         {    
                             if ( !pDataSource->pszPASSWORD )
-                                pDataSource->pszPASSWORD = (char *)strndup(
pAnchorChar, pScanChar - pAnchorChar );
+                                pDataSource->pszPASSWORD = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "PORT" ) == 0 )
                         {    
                             if ( !pDataSource->pszPORT )
-                                pDataSource->pszPORT = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszPORT = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "SERVER" ) == 0 )
                         {    
                             if ( !pDataSource->pszSERVER )
-                                pDataSource->pszSERVER = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszSERVER = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "SOCKET" ) == 0 )
                         {    
                             if ( !pDataSource->pszSOCKET )
-                                pDataSource->pszSOCKET = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszSOCKET = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "STMT" ) == 0 )
                         {    
                             if ( !pDataSource->pszSTMT )
-                                pDataSource->pszSTMT = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszSTMT = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         /*
                             MYODBC RULE
@@ -171,7 +171,7 @@
                         else if ( strcasecmp( pszName, "UID" ) == 0 || strcasecmp(
pszName, "USER" ) == 0 )
                         {    
                             if ( !pDataSource->pszUSER )
-                                pDataSource->pszUSER = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszUSER = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "SAVEFILE" ) == 0 )
                         {

Modified: myodbc3u/MYODBCUtilReadDataSource.c
===================================================================
--- myodbc3u/MYODBCUtilReadDataSource.c	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3u/MYODBCUtilReadDataSource.c	2006-02-23 18:00:48 UTC (rev 34)
@@ -144,65 +144,65 @@
             if ( strcasecmp( pszEntryName, "DATABASE" ) == 0 || strcasecmp( pszEntryName,
"DB" ) == 0 )
             {
                 if ( !pDataSource->pszDATABASE )
-                    pDataSource->pszDATABASE = strdup( szValue ) ;
+                    pDataSource->pszDATABASE = _global_strdup( szValue ) ;
             }
             else if ( strcasecmp( pszEntryName, "DESCRIPTION" ) == 0 || strcasecmp(
pszEntryName, "DESC" ) == 0 )
             {
                 if ( !pDataSource->pszDESCRIPTION )
-                    pDataSource->pszDESCRIPTION = strdup( szValue );
+                    pDataSource->pszDESCRIPTION = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "DRIVER" ) == 0 )
             {
 #if defined(WIN32)
                 if ( !pDataSource->pszDriverFileName )
-                    pDataSource->pszDriverFileName = strdup( szValue );
+                    pDataSource->pszDriverFileName = _global_strdup( szValue );
 #else
                 if ( *szValue == '/' )
                 {
                     if ( !pDataSource->pszDriverFileName )
-                        pDataSource->pszDriverFileName = strdup( szValue );
+                        pDataSource->pszDriverFileName = _global_strdup( szValue );
                 }
                 else
                 {
                     if ( !pDataSource->pszDRIVER )
-                        pDataSource->pszDRIVER = strdup( szValue );
+                        pDataSource->pszDRIVER = _global_strdup( szValue );
                 }
 #endif
             }
             else if ( strcasecmp( pszEntryName, "OPTION" ) == 0 )
             {    
                 if ( !pDataSource->pszOPTION )
-                    pDataSource->pszOPTION = strdup( szValue );
+                    pDataSource->pszOPTION = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "PWD" ) == 0 || strcasecmp( pszEntryName,
"PASSWORD" ) == 0 )
             {    
                 if ( !pDataSource->pszPASSWORD )
-                    pDataSource->pszPASSWORD = strdup( szValue );
+                    pDataSource->pszPASSWORD = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "PORT" ) == 0 )
             {    
                 if ( !pDataSource->pszPORT )
-                    pDataSource->pszPORT = strdup( szValue );
+                    pDataSource->pszPORT = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "SERVER" ) == 0 )
             {    
                 if ( !pDataSource->pszSERVER )
-                    pDataSource->pszSERVER = strdup( szValue );
+                    pDataSource->pszSERVER = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "SOCKET" ) == 0 )
             {    
                 if ( !pDataSource->pszSOCKET )
-                    pDataSource->pszSOCKET = strdup( szValue );
+                    pDataSource->pszSOCKET = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "STMT" ) == 0 )
             {    
                 if ( !pDataSource->pszSTMT )
-                    pDataSource->pszSTMT = strdup( szValue );
+                    pDataSource->pszSTMT = _global_strdup( szValue );
             }
             else if ( strcasecmp( pszEntryName, "UID" ) == 0 || strcasecmp( pszEntryName,
"USER" ) == 0 )
             {    
                 if ( !pDataSource->pszUSER )
-                    pDataSource->pszUSER = strdup( szValue );
+                    pDataSource->pszUSER = _global_strdup( szValue );
             }
             else
             {

Modified: myodbc3u/MYODBCUtilReadDataSourceStr.c
===================================================================
--- myodbc3u/MYODBCUtilReadDataSourceStr.c	2006-02-22 00:09:12 UTC (rev 33)
+++ myodbc3u/MYODBCUtilReadDataSourceStr.c	2006-02-23 18:00:48 UTC (rev 34)
@@ -42,6 +42,41 @@
 }
 #endif
 
+#if defined(WIN32)
+char *strglobaldup( const char *s )
+{
+	size_t nAvail;
+	char *p;
+	
+	nAvail = strlen(s) + 1;
+	p = (char*)GlobalAlloc( GMEM_FIXED, nAvail );
+	memcpy ( p, s, nAvail );
+
+	return p;
+}
+
+char *strnglobaldup( const char *s, size_t n )
+{
+    size_t nAvail;
+    char *p;
+
+    if ( !s )
+        return 0;
+
+    nAvail = min( strlen(s) + 1, n + 1 );
+
+    if ( nAvail < 1 )
+        return 0;
+
+    p      = (char *)GlobalAlloc( GMEM_FIXED, nAvail );
+    memcpy( p, s, nAvail );
+    p[nAvail - 1] = '\0';
+
+    return p; 
+}
+#endif
+
+
 BOOL MYODBCUtilReadDataSourceStrValTerm( MYODBCUTIL_DELIM nDelim, char cChar )
 {
     switch ( nDelim )
@@ -160,27 +195,27 @@
                         if ( strcasecmp( pszName, "DATABASE" ) == 0 || strcasecmp(
pszName, "DB" ) == 0 )
                         {
                             if ( !pDataSource->pszDATABASE )
-                                pDataSource->pszDATABASE = (char *)strndup(
pAnchorChar, pScanChar - pAnchorChar ) ;
+                                pDataSource->pszDATABASE = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar ) ;
                         }
                         else if ( strcasecmp( pszName, "DESCRIPTION" ) == 0 ||
strcasecmp( pszName, "DESC" ) == 0 )
                         {
                             if ( !pDataSource->pszDESCRIPTION )
-                                pDataSource->pszDESCRIPTION = (char *)strndup(
pAnchorChar, pScanChar - pAnchorChar );
+                                pDataSource->pszDESCRIPTION = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "DRIVER" ) == 0 )
                         {
                             if ( !pDataSource->pszDRIVER )
-                                pDataSource->pszDRIVER = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszDRIVER = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "DSN" ) == 0 )
                         {
                             if ( !pDataSource->pszDSN )
-                                pDataSource->pszDSN = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszDSN = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "OPTION" ) == 0 )
                         {
                             if ( !pDataSource->pszOPTION )
-                                pDataSource->pszOPTION = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszOPTION = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         /*
                             MYODBC RULE
@@ -190,27 +225,27 @@
                         else if ( strcasecmp( pszName, "PWD" ) == 0 || strcasecmp(
pszName, "PASSWORD" ) == 0 )
                         {
                             if ( !pDataSource->pszPASSWORD )
-                                pDataSource->pszPASSWORD = (char *)strndup(
pAnchorChar, pScanChar - pAnchorChar );
+                                pDataSource->pszPASSWORD = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "PORT" ) == 0 )
                         {
                             if ( !pDataSource->pszPORT )
-                                pDataSource->pszPORT = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszPORT = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "SERVER" ) == 0 )
                         {
                             if ( !pDataSource->pszSERVER )
-                                pDataSource->pszSERVER = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszSERVER = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "SOCKET" ) == 0 )
                         {
                             if ( !pDataSource->pszSOCKET )
-                                pDataSource->pszSOCKET = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszSOCKET = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else if ( strcasecmp( pszName, "STMT" ) == 0 )
                         {
                             if ( !pDataSource->pszSTMT )
-                                pDataSource->pszSTMT = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszSTMT = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         /*
                             MYODBC RULE
@@ -220,7 +255,7 @@
                         else if ( strcasecmp( pszName, "UID" ) == 0 || strcasecmp(
pszName, "USER" ) == 0 )
                         {
                             if ( !pDataSource->pszUSER )
-                                pDataSource->pszUSER = (char *)strndup( pAnchorChar,
pScanChar - pAnchorChar );
+                                pDataSource->pszUSER = (char *)_global_strndup(
pAnchorChar, pScanChar - pAnchorChar );
                         }
                         else
                         {

Thread
Connector/ODBC 3.51 commit: r34 - myodbc3S myodbc3ubdegtyariov23 Feb