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/Library | jbalint | 13 Nov |