MySQL Lists are EOL. Please join:

List:Commits« Previous MessageNext Message »
From:V Narayanan Date:July 12 2009 5:48am
Subject:bzr commit into mysql-5.0-bugteam branch (v.narayanan:2804) Bug#43572
View as plain text  
#At file:///home/narayanan/Work/mysql_checkouts/shared_repository_directory/mysql-5.0-bugteam-43572-2/ based on revid:joro@stripped

 2804 V Narayanan	2009-07-12
      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.
     @ mysys/array.c
        Bug#43572 Handle failures from hash_init
        
        Remove the MY_WME flag from the call to malloc in order to
        prevent the error status from being set in the init_dynamic_array
        method. Since this memory allocation failure is no longer
        fatal this method has been modified to return FALSE
        (indicate success) irrespective of array->buffer being
        allocated.

    modified:
      mysys/array.c
=== modified file 'mysys/array.c'
--- a/mysys/array.c	2007-03-20 14:34:25 +0000
+++ b/mysys/array.c	2009-07-12 05:48:53 +0000
@@ -31,10 +31,10 @@
   DESCRIPTION
     init_dynamic_array() initiates array and allocate space for 
     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
-    TRUE	my_malloc_ci() failed
     FALSE	Ok
 */
 
@@ -56,11 +56,12 @@ my_bool init_dynamic_array(DYNAMIC_ARRAY
   array->max_element=init_alloc;
   array->alloc_increment=alloc_increment;
   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;
-    DBUG_RETURN(TRUE);
-  }
   DBUG_RETURN(FALSE);
 } 
 


Attachment: [text/bzr-bundle] bzr/v.narayanan@sun.com-20090712054853-1kxvaceenjmn4hjl.bundle
Thread
bzr commit into mysql-5.0-bugteam branch (v.narayanan:2804) Bug#43572V Narayanan12 Jul
  • Re: bzr commit into mysql-5.0-bugteam branch (v.narayanan:2804)Bug#43572Ingo Strüwing13 Jul
  • Re: bzr commit into mysql-5.0-bugteam branch (v.narayanan:2804)Bug#43572Sergey Vojtovich14 Jul