Skip to content

Commit

Permalink
Merge branch 'master' into 2.0 + fix of MbstrCharLen and couple of tests
Browse files Browse the repository at this point in the history
in unicode.c
  • Loading branch information
lawrinn committed Feb 26, 2015
2 parents 122ea34 + 318fcfe commit 0d33104
Show file tree
Hide file tree
Showing 6 changed files with 24 additions and 13 deletions.
7 changes: 2 additions & 5 deletions ma_desc.c
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
/************************************************************************************
Copyright (C) 2013,2015 MariaDB Corporation AB
This library is free software; you can redistribute it and/or
modify it under the terms of the GNU Library General Public
License as published by the Free Software Foundation; either
Expand Down Expand Up @@ -95,12 +95,9 @@ MADB_Desc *MADB_DescInit(MADB_Dbc *Dbc,enum enum_madb_desc_type DescType, my_boo
else
{
Desc->Dbc= Dbc;
if (!isExternal)
EnterCriticalSection(&Dbc->cs);
/* MADB_DescInit call for explicit descriptor is in critical section */
Desc->ListItem.data= (void *)Desc;
Dbc->Descrs= list_add(Dbc->Descrs, &Desc->ListItem);
if (!isExternal)
LeaveCriticalSection(&Dbc->cs);
}
}
if (Desc)
Expand Down
1 change: 0 additions & 1 deletion ma_statement.c
Original file line number Diff line number Diff line change
Expand Up @@ -1129,7 +1129,6 @@ SQLRETURN MADB_StmtBindParam(MADB_Stmt *Stmt, SQLUSMALLINT ParameterNumber,
}
/* }}} */


/* {{{ remove_stmt_ref_from_desc
Helper function removing references to the stmt in the descriptor when explisitly allocated descriptor is substituted
by some other descriptor */
Expand Down
9 changes: 8 additions & 1 deletion ma_string.c
Original file line number Diff line number Diff line change
Expand Up @@ -486,6 +486,7 @@ SQLLEN MbstrCharLen(char *str, SQLINTEGER OctetLen, CHARSET_INFO *cs)
{
SQLLEN result= 0;
char *ptr= str;
unsigned int charlen;

if (str)
{
Expand All @@ -495,7 +496,13 @@ SQLLEN MbstrCharLen(char *str, SQLINTEGER OctetLen, CHARSET_INFO *cs)
}
while (ptr < str + OctetLen)
{
ptr+= cs->mb_charlen(*ptr);
charlen= cs->mb_charlen((unsigned char)*ptr);
if (charlen == 0)
{
/* Dirty hack to avoid dead loop - Has to be the error! */
charlen= 1;
}
ptr+= charlen;
++result;
}
}
Expand Down
2 changes: 1 addition & 1 deletion odbc_3_api.c
Original file line number Diff line number Diff line change
Expand Up @@ -944,7 +944,7 @@ SQLRETURN SQL_API SQLDisconnect(SQLHDBC ConnectionHandle)
MA_SQLFreeStmt((SQLHSTMT)Element->data, SQL_DROP);
}

/* Close all explicitly aloocated descriptors */
/* Close all explicitly allocated descriptors */
for (Element= Connection->Descrs; Element; Element= NextElement)
{
NextElement= Element->next;
Expand Down
2 changes: 2 additions & 0 deletions test/tap.h
Original file line number Diff line number Diff line change
Expand Up @@ -114,6 +114,7 @@ unsigned long my_options= 67108866;
SQLHANDLE Env, Connection, Stmt;

unsigned int my_port= 3306;
char ma_strport[]= ";PORT=3306";

/* To use in tests for conversion of strings to (sql)wchar strings */
SQLWCHAR sqlwchar_buff[1024], sqlwchar_empty[]= {0};
Expand Down Expand Up @@ -215,6 +216,7 @@ void get_options(int argc, char **argv)
exit(0);
}
}
_snprintf(ma_strport, sizeof(ma_strport), ";PORT=%u", my_port);
}

int myrowcount(SQLHSTMT Stmt)
Expand Down
16 changes: 11 additions & 5 deletions test/unicode.c
Original file line number Diff line number Diff line change
Expand Up @@ -288,9 +288,11 @@ ODBC_TEST(sqldriverconnect)
mbstowcs(dummy, (char *)my_schema, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);
wcscat(conn_in, L";SERVER=");
mbstowcs(dummy, (char *)"localhost", sizeof(dummy)/sizeof(wchar_t));
mbstowcs(dummy, (char*)my_servername, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);

mbstowcs(dummy, (char*)ma_strport, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);

CHECK_DBC_RC(hdbc1, SQLDriverConnectW(hdbc1, NULL, WL(conn_in, wcslen(conn_in)),
wcslen(conn_in), conn_out, sizeof(conn_out),
&conn_out_len, SQL_DRIVER_NOPROMPT));
Expand Down Expand Up @@ -1186,9 +1188,11 @@ ODBC_TEST(t_bug28168)
mbstowcs(dummy, (char *)my_schema, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);
wcscat(conn_in, L";SERVER=");
mbstowcs(dummy, (char *)"localhost", sizeof(dummy)/sizeof(wchar_t));
mbstowcs(dummy, (char *)my_servername, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);

mbstowcs(dummy, (char *)ma_strport, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);

CHECK_ENV_RC(Env, SQLAllocHandle(SQL_HANDLE_DBC, Env, &hdbc2));
CHECK_DBC_RC(hdbc2, SQLDriverConnectW(hdbc2, NULL, W(conn_in), SQL_NTS, NULL, 0,
NULL, SQL_DRIVER_NOPROMPT));
Expand Down Expand Up @@ -1264,7 +1268,9 @@ ODBC_TEST(t_bug14363601)
mbstowcs(dummy, (char *)my_schema, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);
wcscat(conn_in, L";SERVER=");
mbstowcs(dummy, (char *)"localhost", sizeof(dummy)/sizeof(wchar_t));
mbstowcs(dummy, (char *)my_servername, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);
mbstowcs(dummy, (char *)ma_strport, sizeof(dummy)/sizeof(wchar_t));
wcscat(conn_in, dummy);

wcscat(conn_in, L";CHARSET=utf8");
Expand Down

0 comments on commit 0d33104

Please sign in to comment.