List:Commits« Previous MessageNext Message »
From:jbalint Date:November 13 2006 11:34pm
Subject:Connector/ODBC 5 commit: r667 - trunk/SDK/MYSQLPlus/Library
View as plain text  
Modified:
   trunk/SDK/MYSQLPlus/Library/MConnection.cpp
   trunk/SDK/MYSQLPlus/Library/MDiagnostic.cpp
   trunk/SDK/MYSQLPlus/Library/MDiagnosticRecord.cpp
Log:
Fixed string length to chars, not bytes, returned by SQLGetDiagRec.
Fixed using wrong pointer for SQL_MAX_DRIVER_CONNECTIONS in SQLGetInfo.

Modified: trunk/SDK/MYSQLPlus/Library/MConnection.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MConnection.cpp	2006-11-13 20:20:16 UTC (rev 666)
+++ trunk/SDK/MYSQLPlus/Library/MConnection.cpp	2006-11-13 22:34:19 UTC (rev 667)
@@ -565,12 +565,11 @@
     SQLSMALLINT *       pnSQLSMALLINT   = (SQLSMALLINT *)pInfoValue;
     SQLUINTEGER *       pnSQLUINTEGER   = (SQLUINTEGER *)pInfoValue;
     SQLWCHAR *          pszSQLWCHAR     = (SQLWCHAR *)pInfoValue;
-    /* SQLSMALLINT *       pnSQLSMALLINT   = (SQLSMALLINT *)pInfoValue; */
     /* pnStringLengthBytes is optional so provide dummy to make code below a little
cleaner */
     SQLSMALLINT         nStringLengthBytes;
     SQLSMALLINT *       pnStringLengthBytes  = pnStringLengthBytesPtr;
     SQLINTEGER          nStringLengthChars;
-    BOOL             bCopyOk;
+    BOOL                bCopyOk;
 
     /*!
         \internal ODBC RULE
@@ -1138,7 +1137,8 @@
             *pnStringLengthBytes = sizeof(SQLUSMALLINT);
             break;
         case SQL_MAX_DRIVER_CONNECTIONS:
-            *pnSQLUINTEGER = getInfoMaxDriverConnections();
+            *pnSQLUSMALLINT = getInfoMaxDriverConnections();
+            *pnStringLengthBytes = sizeof(SQLUSMALLINT);
             break;
         case SQL_MAX_IDENTIFIER_LEN:
             *pnSQLUSMALLINT = getInfoMaxIdentifierLen();

Modified: trunk/SDK/MYSQLPlus/Library/MDiagnostic.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MDiagnostic.cpp	2006-11-13 20:20:16 UTC (rev 666)
+++ trunk/SDK/MYSQLPlus/Library/MDiagnostic.cpp	2006-11-13 22:34:19 UTC (rev 667)
@@ -171,6 +171,10 @@
     }
 
     nReturn = getDiagField( nRecNumber, SQL_DIAG_MESSAGE_TEXT, pszMessageText,
nBufferCharLength, pnTextByteLength );
+    /* we need char length for getDiagRec,
+     * not byte length which is what getDiagField returns */
+    if ( pnTextByteLength )
+    	*pnTextByteLength /= 2;
     if ( nReturn == SQL_SUCCESS_WITH_INFO )
         nReturnHolistic = SQL_SUCCESS_WITH_INFO;
     if ( !SQL_SUCCEEDED( nReturn ) )

Modified: trunk/SDK/MYSQLPlus/Library/MDiagnosticRecord.cpp
===================================================================
--- trunk/SDK/MYSQLPlus/Library/MDiagnosticRecord.cpp	2006-11-13 20:20:16 UTC (rev 666)
+++ trunk/SDK/MYSQLPlus/Library/MDiagnosticRecord.cpp	2006-11-13 22:34:19 UTC (rev 667)
@@ -97,7 +97,7 @@
     MYODBCDbgReturn( SQL_SUCCESS );
 }
 
-SQLRETURN MDiagnosticRecord::getDiagRec( SQLWCHAR *psSqlstate, SQLINTEGER
*pnNativeErrorPtr, SQLWCHAR *pszMessageText, SQLSMALLINT nBufferCharLength, SQLSMALLINT
*pnTextByteLength )
+SQLRETURN MDiagnosticRecord::getDiagRec( SQLWCHAR *psSqlstate, SQLINTEGER
*pnNativeErrorPtr, SQLWCHAR *pszMessageText, SQLSMALLINT nBufferCharLength, SQLSMALLINT
*pnTextCharLength )
 {
     SQLRETURN   nReturn;
     BOOL     bHasInfo = false;
@@ -118,7 +118,9 @@
         MYODBCDbgReturn( nReturn );
 
     nReturn = getDiagField( SQL_DIAG_MESSAGE_TEXT, pszMessageText, nBufferCharLength,
&nByteLength );
-    if ( pnTextByteLength ) *pnTextByteLength = nByteLength;
+    /* we need char length for getDiagRec,
+     * not byte length which is what getDiagField returns */
+    if ( pnTextCharLength ) *pnTextCharLength = nByteLength / 2;
     if ( nReturn == SQL_SUCCESS_WITH_INFO )
         bHasInfo = true;
     if ( !SQL_SUCCEEDED( nReturn ) )

Thread
Connector/ODBC 5 commit: r667 - trunk/SDK/MYSQLPlus/Libraryjbalint13 Nov