Commit ce0bf2a4 authored by V Narayanan's avatar V Narayanan

Bug#43572 Handle failures from hash_init

This patch is a follow up to http://lists.mysql.com/commits/76678.
When an allocation failure occurs for the buffer in the dynamic
array, an error condition was being set. The dynamic array is
usable even if the memory allocation fails. Since in most cases
the thread can continue to work without any problems the error
condition should not be set here.

This patch adds logic to remove the error condition from being set
when the memory allocation for the buffer in dynamic array fails.
parent 6a7240b8
...@@ -31,10 +31,10 @@ ...@@ -31,10 +31,10 @@
DESCRIPTION DESCRIPTION
init_dynamic_array() initiates array and allocate space for init_dynamic_array() initiates array and allocate space for
init_alloc eilements. init_alloc eilements.
Array is usable even if space allocation failed. Array is usable even if space allocation failed, hence, the
function never returns TRUE.
RETURN VALUE RETURN VALUE
TRUE my_malloc_ci() failed
FALSE Ok FALSE Ok
*/ */
...@@ -56,11 +56,12 @@ my_bool init_dynamic_array(DYNAMIC_ARRAY *array, uint element_size, ...@@ -56,11 +56,12 @@ my_bool init_dynamic_array(DYNAMIC_ARRAY *array, uint element_size,
array->max_element=init_alloc; array->max_element=init_alloc;
array->alloc_increment=alloc_increment; array->alloc_increment=alloc_increment;
array->size_of_element=element_size; array->size_of_element=element_size;
if (!(array->buffer=(char*) my_malloc_ci(element_size*init_alloc,MYF(MY_WME)))) /*
{ Since the dynamic array is usable even if allocation fails here malloc
should not throw an error
*/
if (!(array->buffer= (char*) my_malloc_ci(element_size*init_alloc, MYF(0))))
array->max_element=0; array->max_element=0;
DBUG_RETURN(TRUE);
}
DBUG_RETURN(FALSE); DBUG_RETURN(FALSE);
} }
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment