From 0dd066cb6f462cd4d76184e4176aefbf7d874440 Mon Sep 17 00:00:00 2001 From: Vasil Dimov Date: Tue, 18 Dec 2012 20:55:30 +0200 Subject: [PATCH] Fix Bug#16000909 MEMORY LEAK, MYSQL_INPLACE_ALTER_TABLE This is a followup to the fix of Bug#14628410 ASSERTION `! IS_SET()' FAILED IN DIAGNOSTICS_AREA::SET_OK_STATUS (satya.bodapati@oracle.com-20121213132316-5joz4phltx9yhjs7) In innobase_mysql_tmpfile(): allocate/open the file after the return(-1); statement. --- storage/innodb_plugin/handler/ha_innodb.cc | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/storage/innodb_plugin/handler/ha_innodb.cc b/storage/innodb_plugin/handler/ha_innodb.cc index 340e7cccd97..e15c84c8346 100644 --- a/storage/innodb_plugin/handler/ha_innodb.cc +++ b/storage/innodb_plugin/handler/ha_innodb.cc @@ -1140,7 +1140,10 @@ innobase_mysql_tmpfile(void) DBUG_ENTER("innobase_mysql_tmpfile"); - DBUG_EXECUTE_IF("innobase_tmpfile_creation_failure", return(-1);); + DBUG_EXECUTE_IF( + "innobase_tmpfile_creation_failure", + return(-1); + ); tmpdir = my_tmpdir(&mysql_tmpdir_list); @@ -1203,9 +1206,14 @@ innobase_mysql_tmpfile(void) /*========================*/ { int fd2 = -1; - File fd = mysql_tmpfile("ib"); + File fd; - DBUG_EXECUTE_IF("innobase_tmpfile_creation_failure", return(-1);); + DBUG_EXECUTE_IF( + "innobase_tmpfile_creation_failure", + return(-1); + ); + + fd = mysql_tmpfile("ib"); if (fd >= 0) { /* Copy the file descriptor, so that the additional resources