Modified:
branches/guffert/driver/unicode.c
branches/guffert/test/my_unicode.c
Log:
Really fix functions that take and return size of a SQLWCHAR * to be in bytes,
not characters. And fix tests to match.
Modified: branches/guffert/driver/unicode.c
===================================================================
--- branches/guffert/driver/unicode.c 2007-08-30 23:29:00 UTC (rev 720)
+++ branches/guffert/driver/unicode.c 2007-08-30 23:45:32 UTC (rev 721)
@@ -334,13 +334,13 @@
&len, &errors);
/* char_attr_max is in bytes, we want it in chars. */
- char_attr_max/= 2;
+ char_attr_max/= sizeof(SQLWCHAR);
if (len > char_attr_max - 1)
rc= set_error(stmt, MYERR_01004, NULL, 0);
if (char_attr_len)
- *char_attr_len= (SQLSMALLINT)len;
+ *char_attr_len= (SQLSMALLINT)len * sizeof(SQLWCHAR);
if (char_attr_max > 0)
{
@@ -705,13 +705,13 @@
&len, &errors);
/* value_max is in bytes, we want it in chars. */
- value_max/= 2;
+ value_max/= sizeof(SQLWCHAR);
if (len > value_max - 1)
rc= set_conn_error(dbc, MYERR_01004, NULL, 0);
if (value_len)
- *value_len= len;
+ *value_len= len * sizeof(SQLWCHAR);
if (value_max > 0)
{
@@ -809,13 +809,13 @@
value, &len, &errors);
/* info_max is in bytes, we want it in chars. */
- info_max/= 2;
+ info_max/= sizeof(SQLWCHAR);
if (len > info_max - 1)
rc= set_conn_error(dbc, MYERR_01004, NULL, 0);
if (info_len)
- *info_len= len;
+ *info_len= len * sizeof(SQLWCHAR);
if (info_max > 0)
{
@@ -935,13 +935,13 @@
char_value, &len, &errors);
/* value_max is in bytes, we want it in chars. */
- value_max/= 2;
+ value_max/= sizeof(SQLWCHAR);
if (len > value_max - 1)
rc= set_conn_error(dbc, MYERR_01004, NULL, 0);
if (value_len)
- *value_len= len;
+ *value_len= len * sizeof(SQLWCHAR);
if (value_max > 0)
{
Modified: branches/guffert/test/my_unicode.c
===================================================================
--- branches/guffert/test/my_unicode.c 2007-08-30 23:29:00 UTC (rev 720)
+++ branches/guffert/test/my_unicode.c 2007-08-30 23:45:32 UTC (rev 721)
@@ -475,21 +475,19 @@
ok_sql(hstmt1, "SELECT * FROM t_colattrib AS b");
ok_stmt(hstmt1, SQLColAttributeW(hstmt1, 1, SQL_DESC_NAME,
- wbuff, sizeof(wbuff) / sizeof(wbuff[0]),
- &len, NULL));
- is_num(len, 3);
+ wbuff, sizeof(wbuff), &len, NULL));
+ is_num(len, 3 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(wbuff), L"a\u00e3g", 4);
expect_stmt(hstmt1, SQLColAttributeW(hstmt1, 1, SQL_DESC_BASE_TABLE_NAME,
- wbuff, 5, &len, NULL),
+ wbuff, 5 * sizeof(SQLWCHAR), &len, NULL),
SQL_SUCCESS_WITH_INFO);
- is_num(len, 11);
+ is_num(len, 11 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(wbuff), L"t_co", 5);
ok_stmt(hstmt1, SQLColAttributeW(hstmt1, 1, SQL_DESC_TYPE_NAME,
- wbuff, sizeof(wbuff) / sizeof(wbuff[0]),
- &len, NULL));
- is_num(len, 7);
+ wbuff, sizeof(wbuff), &len, NULL));
+ is_num(len, 7 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(wbuff), L"integer", 8);
ok_sql(hstmt1, "DROP TABLE IF EXISTS t_colattrib");
@@ -560,14 +558,14 @@
ok_con(hdbc1, SQLAllocStmt(hdbc1, &hstmt1));
ok_stmt(hstmt1, SQLGetConnectAttrW(hdbc1, SQL_ATTR_CURRENT_CATALOG, wbuff,
- sizeof(wbuff) / sizeof(wbuff[0]), &len));
- is_num(len, 4);
+ sizeof(wbuff), &len));
+ is_num(len, 4 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(wbuff), L"test", 5);
expect_stmt(hstmt1, SQLGetConnectAttrW(hdbc1, SQL_ATTR_CURRENT_CATALOG,
- wbuff, 3, &len),
+ wbuff, 3 * sizeof(SQLWCHAR), &len),
SQL_SUCCESS_WITH_INFO);
- is_num(len, 4);
+ is_num(len, 4 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(wbuff), L"te", 3);
ok_stmt(hstmt1, SQLFreeStmt(hstmt1, SQL_DROP));
@@ -651,19 +649,22 @@
is_num(data, 1);
ok_stmt(hstmt, SQLGetDiagFieldW(SQL_HANDLE_STMT, hstmt1, 1,
- SQL_DIAG_CLASS_ORIGIN, message, 255, &len));
- is_num(len, 8);
+ SQL_DIAG_CLASS_ORIGIN, message,
+ sizeof(message), &len));
+ is_num(len, 8 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(message), L"ISO 9075", 9);
expect_stmt(hstmt, SQLGetDiagFieldW(SQL_HANDLE_STMT, hstmt1, 1,
- SQL_DIAG_SQLSTATE, message, 4, &len),
+ SQL_DIAG_SQLSTATE, message,
+ 4 * sizeof(SQLWCHAR), &len),
SQL_SUCCESS_WITH_INFO);
- is_num(len, 5);
+ is_num(len, 5 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(message), L"42S", 4);
ok_stmt(hstmt, SQLGetDiagFieldW(SQL_HANDLE_STMT, hstmt1, 1,
- SQL_DIAG_SUBCLASS_ORIGIN, message, 20, &len));
- is_num(len, 8);
+ SQL_DIAG_SUBCLASS_ORIGIN, message,
+ sizeof(message), &len));
+ is_num(len, 8 * sizeof(SQLWCHAR));
is_wstr(sqlwchar_to_wchar_t(message), L"ODBC 3.0", 9);
ok_stmt(hstmt1, SQLFreeStmt(hstmt1, SQL_DROP));
| Thread |
|---|
| • Connector/ODBC 3.51 commit: r721 - in branches/guffert: driver test | jwinstead | 31 Aug |