mirror of
https://github.com/MariaDB/server.git
synced 2026-04-26 10:15:29 +02:00
Bug #56709: Memory leaks at running the 5.1 test suite
Fixed a number of memory leaks discovered by valgrind. dbug/dbug.c: This is actually an addendum to the fix for bug #52629: - there is no point in limiting the fix to just global variables, session ones are also affected. - zero all fields when allocating a new 'state' structure so that FreeState() does not deal with unitialized data later. - add a check for a NULL pointer in DBUGCloseFile() mysql-test/r/partition_error.result: Added a test case for bug #56709. mysql-test/r/variables_debug.result: Added a test case for bug #56709. mysql-test/t/partition_error.test: Added a test case for bug #56709. mysql-test/t/variables_debug.test: Added a test case for bug #56709. sql/item_timefunc.cc: There is no point in declaring 'value' as a member of Item_extract and dynamically allocating memory for it in Item_extract::fix_length_and_dec(), since this string is only used as a temporary storage in Item_extract::val_int(). sql/item_timefunc.h: Removed 'value' from the Item_extract class definition. sql/sql_load.cc: - we may need to deallocate 'buffer' even when 'error' is non-zero in some cases, since 'error' is public, and there is external code modifying it. - assign NULL to buffer when deallocating it so that we don't do it twice in the destructor - there is no point in changing 'error' in the destructor.
This commit is contained in:
parent
0c74cc0d10
commit
faf54ff95c
8 changed files with 61 additions and 19 deletions
|
|
@ -2270,8 +2270,6 @@ void Item_extract::print(String *str, enum_query_type query_type)
|
|||
|
||||
void Item_extract::fix_length_and_dec()
|
||||
{
|
||||
value.alloc(32); // alloc buffer
|
||||
|
||||
maybe_null=1; // If wrong date
|
||||
switch (int_type) {
|
||||
case INTERVAL_YEAR: max_length=4; date_value=1; break;
|
||||
|
|
@ -2314,6 +2312,8 @@ longlong Item_extract::val_int()
|
|||
}
|
||||
else
|
||||
{
|
||||
char buf[40];
|
||||
String value(buf, sizeof(buf), &my_charset_bin);;
|
||||
String *res= args[0]->val_str(&value);
|
||||
if (!res || str_to_time_with_warn(res->ptr(), res->length(), <ime))
|
||||
{
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue