Skip to content

Commit 640ff30

Browse files
author
Tor Didriksen
committed
Bug#14840488 VALGRIND ERRORS IN MYSQL_CLIENT_TEST
Add missing DBUG_RETURNs, otherwise the debug-stack gets messed up, and _db_enter_ and _db_exit_ will access data outside the current stack frame. Add some missing mysql_free_xx() mysql_close_xx() to fix memory leaks.
1 parent a06bdee commit 640ff30

File tree

2 files changed

+7
-1
lines changed

2 files changed

+7
-1
lines changed

libmysql/libmysql.c

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4239,7 +4239,7 @@ int STDCALL mysql_stmt_fetch_column(MYSQL_STMT *stmt, MYSQL_BIND *my_bind,
42394239
if ((int) stmt->state < (int) MYSQL_STMT_FETCH_DONE)
42404240
{
42414241
set_stmt_error(stmt, CR_NO_DATA, unknown_sqlstate, NULL);
4242-
return 1;
4242+
DBUG_RETURN(1);
42434243
}
42444244
if (column >= stmt->field_count)
42454245
{

tests/mysql_client_test.c

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -978,6 +978,7 @@ static void test_wl4435_2()
978978
rc= mysql_query(mysql, "DROP PROCEDURE p1");
979979
myquery(rc);
980980
}
981+
mct_close_log();
981982
}
982983

983984

@@ -1041,6 +1042,7 @@ static void test_wl4435_2()
10411042
rc= mysql_stmt_next_result(ps); \
10421043
DIE_UNLESS(rc == 0); \
10431044
\
1045+
mysql_free_result(rs_metadata); \
10441046
mysql_stmt_free_result(ps); \
10451047
mysql_stmt_close(ps); \
10461048
\
@@ -16192,6 +16194,7 @@ static void test_bug27876()
1619216194

1619316195
rc= mysql_query(mysql, "set names default");
1619416196
myquery(rc);
16197+
DBUG_VOID_RETURN;
1619516198
}
1619616199

1619716200

@@ -17981,6 +17984,8 @@ static void test_bug43560(void)
1798117984
rc= mysql_stmt_execute(stmt);
1798217985
DIE_UNLESS(rc && mysql_stmt_errno(stmt) == CR_SERVER_LOST);
1798317986

17987+
mysql_stmt_close(stmt);
17988+
1798417989
opt_drop_db= 0;
1798517990
client_disconnect(conn);
1798617991
rc= mysql_query(mysql, "DROP TABLE t1");
@@ -18280,6 +18285,7 @@ static void test_bug42373()
1828018285
DIE_UNLESS(rc == 1);
1828118286

1828218287
mysql_stmt_close(stmt);
18288+
mysql_close(&con);
1828318289

1828418290
/* Now try with a multi-statement. */
1828518291
DIE_UNLESS(mysql_client_init(&con));

0 commit comments

Comments
 (0)